Fix GCC_ANALYZER_WARNING with -Wanalyzer-null-dereference

This commit is contained in:
Takao Fujiwara 2022-05-06 20:48:11 +09:00
parent e5e10d1ebc
commit 17094f4695
2 changed files with 71 additions and 1 deletions

View File

@ -24,3 +24,70 @@ index 14a9db4..902c7ac 100644
-- --
2.33.1 2.33.1
From 255323305b3621286cc4025ac59fa7d37fa1e7ce Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 6 May 2022 20:33:47 +0900
Subject: [PATCH] src-main/context.c: Code reviews
---
src-main/context.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/src-main/context.c b/src-main/context.c
index 20dde71..d84858c 100644
--- a/src-main/context.c
+++ b/src-main/context.c
@@ -451,7 +451,7 @@ anthy_get_nth_segment(struct segment_list *sl, int n)
n < 0) {
return NULL;
}
- for (i = 0, se = sl->list_head.next; i < n; i++, se = se->next);
+ for (i = 0, se = sl->list_head.next; (i < n) && se; i++, se = se->next);
return se;
}
@@ -499,6 +499,17 @@ get_change_state(struct anthy_context *ac)
int i;
for (i = 0; i < ac->seg_list.nr_segments; i++) {
struct seg_ent *s = anthy_get_nth_segment(&ac->seg_list, i);
+ if (!ac->split_info.ce) {
+ anthy_log(0, "ac->split_info.ce is NULL %s:%d\n", __FILE__, __LINE__);
+ resize = 1;
+ break;
+ }
+ if (!s) {
+ anthy_log(0, "ac->seg_list %dth entry is NULL %s:%d\n",
+ i, __FILE__, __LINE__);
+ resize = 1;
+ continue;
+ }
if (ac->split_info.ce[s->from].initial_seg_len != s->len) {
resize = 1;
}
@@ -538,6 +549,11 @@ write_history(int fd,
struct seg_ent *s = anthy_get_nth_segment(&ac->seg_list, i);
char *c;
/**/
+ if (!s) {
+ anthy_log(0, "ac->seg_list %dth entry is NULL %s:%d\n",
+ i, __FILE__, __LINE__);
+ continue;
+ }
if (s->committed < 0) {
dprintf(fd, "?|");
continue ;
@@ -647,9 +663,11 @@ print_segment(struct seg_ent *e)
{
int i;
+ assert(e);
anthy_putxstr(&e->str);
printf("(");
for ( i = 0 ; i < e->nr_cands ; i++) {
+ assert(e->cands);
anthy_print_candidate(e->cands[i]);
printf(",");
}
--
2.35.1

View File

@ -10,7 +10,7 @@
Name: anthy-unicode Name: anthy-unicode
Version: 1.0.0.20211224 Version: 1.0.0.20211224
Release: 4%{?dist} Release: 5%{?dist}
# The entire source code is LGPLv2+ and dictionaries is GPLv2. the corpus data is under Public Domain. # The entire source code is LGPLv2+ and dictionaries is GPLv2. the corpus data is under Public Domain.
License: LGPLv2+ and GPLv2 and Public Domain License: LGPLv2+ and GPLv2 and Public Domain
URL: https://github.com/fujiwarat/anthy-unicode/wiki URL: https://github.com/fujiwarat/anthy-unicode/wiki
@ -168,6 +168,9 @@ cd ..
%changelog %changelog
* Fri May 06 2022 Takao Fujiwara <fujiwara@redhat.com> 1.0.0.20211224-5
- Fix GCC_ANALYZER_WARNING with -Wanalyzer-null-dereference
* Fri Feb 11 2022 Takao Fujiwara <fujiwara@redhat.com> 1.0.0.20211224-4 * Fri Feb 11 2022 Takao Fujiwara <fujiwara@redhat.com> 1.0.0.20211224-4
- Resolves: #2051670 xemacs is a dead package - Resolves: #2051670 xemacs is a dead package