comparison Wnn/jserver/renbn_kai.c @ 25:466fe6732d8d

- fixed more NULL pointer related errata - suppress warnings
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sat, 06 Mar 2010 04:37:31 +0900
parents ed4bb01eb317
children
comparison
equal deleted inserted replaced
24:becc60787557 25:466fe6732d8d
23 * You should have received a copy of the GNU General Public License 23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software 24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 */ 26 */
27 27
28 static char rcs_id[] = "$Id: renbn_kai.c,v 1.4 2002/09/01 17:13:11 hiroo Exp $";
29
30 #ifdef HAVE_CONFIG_H 28 #ifdef HAVE_CONFIG_H
31 # include <config.h> 29 # include <config.h>
32 #endif 30 #endif
33 31
34 /* #include <stdio.h> */ /* for debug only */ 32 /* #include <stdio.h> */ /* for debug only */
119 /* 1 文節決定可能になるまでノードを作る */ 117 /* 1 文節決定可能になるまでノードを作る */
120 if (kaidbno == 1) 118 if (kaidbno == 1)
121 { 119 {
122 /* 各文節の評価値の足し算(son_v)は、mknode でやるんだけど kaidbno が 1 120 /* 各文節の評価値の足し算(son_v)は、mknode でやるんだけど kaidbno が 1
123 つまり 1文節解析の場合は、そこを通らないからここでやろう */ 121 つまり 1文節解析の場合は、そこを通らないからここでやろう */
124 for (brbzdptr = rbzdptr->lnk_br; brbzdptr != 0; brbzdptr = brbzdptr->lnk_br) 122 for (brbzdptr = rbzdptr->lnk_br; brbzdptr != NULL; brbzdptr = brbzdptr->lnk_br)
125 brbzdptr->son_v = brbzdptr->v_jc; 123 brbzdptr->son_v = brbzdptr->v_jc;
126 } 124 }
127 else 125 else
128 { 126 {
129 while ((int) (rbzdptr->kbcnt) < kaidbno && rtmknode > 0) 127 while ((int) (rbzdptr->kbcnt) < kaidbno && rtmknode > 0)
149 } 147 }
150 } 148 }
151 } 149 }
152 150
153 /* 最大の評価を持つノードを見つける */ 151 /* 最大の評価を持つノードを見つける */
154 for (brbzdptr = rbzdptr->lnk_br, maxbzd = rbzdptr; brbzdptr != 0; brbzdptr = wkbzdptr) 152 for (brbzdptr = rbzdptr->lnk_br, maxbzd = rbzdptr; brbzdptr != NULL; brbzdptr = wkbzdptr)
155 { 153 {
156 wkbzdptr = brbzdptr->lnk_br; 154 wkbzdptr = brbzdptr->lnk_br;
157 if (maxbzd->son_v <= brbzdptr->son_v) 155 if (maxbzd->son_v <= brbzdptr->son_v)
158 { 156 {
159 clr_node (maxbzd); /* garbage collection */ 157 clr_node (maxbzd); /* garbage collection */
225 wnn_errorno = WNN_FZK_FILE_NO_LOAD; 223 wnn_errorno = WNN_FZK_FILE_NO_LOAD;
226 return (-1); 224 return (-1);
227 } 225 }
228 ft = (struct FT *) files[c_env->fzk_fid].area; 226 ft = (struct FT *) files[c_env->fzk_fid].area;
229 227
230 rbzdptr = 0; 228 rbzdptr = NULL;
231 _status = 0; 229 _status = 0;
232 if (chk_yomi_endvect (yomi_sno, yomi_eno, endvect, endvect1) < 0) 230 if (chk_yomi_endvect (yomi_sno, yomi_eno, endvect, endvect1) < 0)
233 return (-1); 231 return (-1);
234 if (dbn_kai (yomi_sno, yomi_eno, beginvect, 232 if (dbn_kai (yomi_sno, yomi_eno, beginvect,
235 #ifndef NO_FZK 233 #ifndef NO_FZK
240 init_work_areas (); 238 init_work_areas ();
241 return (-1); /* ERROR */ 239 return (-1); /* ERROR */
242 } 240 }
243 241
244 /* 最大の評価値を持つノードを見つける */ 242 /* 最大の評価値を持つノードを見つける */
245 for (brbzdptr = rbzdptr, maxbzd = 0; brbzdptr != 0; brbzdptr = wkbzdptr) 243 for (brbzdptr = rbzdptr, maxbzd = NULL; brbzdptr != NULL; brbzdptr = wkbzdptr)
246 { 244 {
247 wkbzdptr = brbzdptr->lnk_br; 245 wkbzdptr = brbzdptr->lnk_br;
248 if (brbzdptr->j_c == yomi_eno - 1) 246 if (brbzdptr->j_c == yomi_eno - 1)
249 { /* 文節長さ */ 247 { /* 文節長さ */
250 if (maxbzd == NULL) 248 if (maxbzd == NULL)
315 wnn_errorno = WNN_FZK_FILE_NO_LOAD; 313 wnn_errorno = WNN_FZK_FILE_NO_LOAD;
316 return (-1); 314 return (-1);
317 } 315 }
318 ft = (struct FT *) files[c_env->fzk_fid].area; 316 ft = (struct FT *) files[c_env->fzk_fid].area;
319 317
320 rsbnptr = 0; 318 rsbnptr = NULL;
321 _status = 0; 319 _status = 0;
322 if (chk_yomi_endvect (yomi_sno, yomi_eno, endvect, endvect1) < 0) 320 if (chk_yomi_endvect (yomi_sno, yomi_eno, endvect, endvect1) < 0)
323 return (-1); 321 return (-1);
324 if (sbn_kai (yomi_sno, yomi_eno, endvect, endvect1, &rsbnptr, 1, 0) < 0) 322 if (sbn_kai (yomi_sno, yomi_eno, endvect, endvect1, &rsbnptr, 1, NULL) < 0)
325 { 323 {
326 init_work_areas (); 324 init_work_areas ();
327 return (-1); /* ERROR */ 325 return (-1); /* ERROR */
328 } 326 }
329 327
330 /* 最大の評価値を持つノードを見つける */ 328 /* 最大の評価値を持つノードを見つける */
331 for (brsbnptr = rsbnptr, maxsbn = 0; brsbnptr != 0; brsbnptr = wksbnptr) 329 for (brsbnptr = rsbnptr, maxsbn = NULL; brsbnptr != NULL; brsbnptr = wksbnptr)
332 { 330 {
333 wksbnptr = brsbnptr->lnk_br; 331 wksbnptr = brsbnptr->lnk_br;
334 if (brsbnptr->j_c == yomi_eno - 1) 332 if (brsbnptr->j_c == yomi_eno - 1)
335 { /* 文節長さ */ 333 { /* 文節長さ */
336 if (maxsbn == NULL) 334 if (maxsbn == NULL)
376 if (maxsbn == NULL) 374 if (maxsbn == NULL)
377 { 375 {
378 if (set_kata_giji_sbn (yomi_sno, yomi_eno, endvect, endvect1, &maxsbn) < 0) 376 if (set_kata_giji_sbn (yomi_sno, yomi_eno, endvect, endvect1, &maxsbn) < 0)
379 return (-1); 377 return (-1);
380 } 378 }
381 if (maxsbn->jentptr == 0 && maxsbn->status == WNN_NOT_CONNECT) 379 if (maxsbn->jentptr == NULL && maxsbn->status == WNN_NOT_CONNECT)
382 maxsbn->status = WNN_GIJI; 380 maxsbn->status = WNN_GIJI;
383 sbn_cnt = cnt_syo (maxsbn); 381 sbn_cnt = cnt_syo (maxsbn);
384 if ((*dsd_sbn = get_dsd_sbn (sbn_cnt)) == NULL) 382 if ((*dsd_sbn = get_dsd_sbn (sbn_cnt)) == NULL)
385 { 383 {
386 init_work_areas (); 384 init_work_areas ();
402 struct DSD_DBN *nextp; 400 struct DSD_DBN *nextp;
403 #ifdef CONVERT_from_TOP 401 #ifdef CONVERT_from_TOP
404 struct DSD_DBN *dsd_dbn_head; 402 struct DSD_DBN *dsd_dbn_head;
405 struct BZD *s_bzd; /* Buffer son's bzd */ 403 struct BZD *s_bzd; /* Buffer son's bzd */
406 dsd_dbn_head = dsd_dbn; 404 dsd_dbn_head = dsd_dbn;
407 while (bzd != 0) 405 while (bzd != NULL)
408 { 406 {
409 nextp = dsd_dbn++; 407 nextp = dsd_dbn++;
410 nextp->bun_m = bzd->bend_m; 408 nextp->bun_m = bzd->bend_m;
411 nextp->bun_jc = bzd->j_c; 409 nextp->bun_jc = bzd->j_c;
412 nextp->sbncnt = bzd->sbn_cnt; 410 nextp->sbncnt = bzd->sbn_cnt;
422 freebzd (bzd); 420 freebzd (bzd);
423 bzd = s_bzd; 421 bzd = s_bzd;
424 } 422 }
425 return (dsd_dbn_head); 423 return (dsd_dbn_head);
426 #else /* CONVERT_from_TOP */ 424 #else /* CONVERT_from_TOP */
427 if (bzd == 0) 425 if (bzd == NULL)
428 return (dsd_dbn); 426 return (dsd_dbn);
429 nextp = dcdbn_set (dsd_dbn, dsd_sbn, bzd->lnk_son); 427 nextp = dcdbn_set (dsd_dbn, dsd_sbn, bzd->lnk_son);
430 nextp->bun_m = bzd->bend_m; 428 nextp->bun_m = bzd->bend_m;
431 nextp->bun_jc = bzd->j_c; 429 nextp->bun_jc = bzd->j_c;
432 nextp->sbncnt = bzd->sbn_cnt; 430 nextp->sbncnt = bzd->sbn_cnt;
444 442
445 static struct DSD_SBN * 443 static struct DSD_SBN *
446 dcdsbn_set (struct DSD_SBN *dsd_sbn, 444 dcdsbn_set (struct DSD_SBN *dsd_sbn,
447 struct SYO_BNSETSU *sbn) 445 struct SYO_BNSETSU *sbn)
448 { 446 {
449 if (sbn == 0) 447 if (sbn == NULL)
450 return (dsd_sbn); 448 return (dsd_sbn);
451 #ifdef CONVERT_from_TOP 449 #ifdef CONVERT_from_TOP
452 dsd_sbn = dcdsbn_set (dsd_sbn, sbn->parent); 450 dsd_sbn = dcdsbn_set (dsd_sbn, sbn->parent);
453 #endif /* CONVERT_from_TOP */ 451 #endif /* CONVERT_from_TOP */
454 dsd_sbn->bun_m = sbn->bend_m; 452 dsd_sbn->bun_m = sbn->bend_m;
472 static int 470 static int
473 cnt_syo (struct SYO_BNSETSU *sbn) 471 cnt_syo (struct SYO_BNSETSU *sbn)
474 { 472 {
475 int cnt; 473 int cnt;
476 cnt = 0; 474 cnt = 0;
475
477 while (sbn) 476 while (sbn)
478 { 477 {
479 cnt++; 478 cnt++;
480 sbn = sbn->parent; 479 sbn = sbn->parent;
481 } 480 }
561 log_err ("tan_syo(): cannot make tanbunsetu kouho."); 560 log_err ("tan_syo(): cannot make tanbunsetu kouho.");
562 return (-1); 561 return (-1);
563 } 562 }
564 } 563 }
565 564
566 if ((*sbn = getsbnsp ()) == 0) 565 if ((*sbn = getsbnsp ()) == NULL)
567 return (-1); 566 return (-1);
568 567
569 (*sbn)->j_c = yomi_eno - 1; 568 (*sbn)->j_c = yomi_eno - 1;
570 (*sbn)->i_jc = getfzkoh (ichbnpbp, tempi)->offset + yomi_sno; 569 (*sbn)->i_jc = getfzkoh (ichbnpbp, tempi)->offset + yomi_sno;
571 (*sbn)->bend_m = yomi_sno; 570 (*sbn)->bend_m = yomi_sno;
572 (*sbn)->v_jc = 0; 571 (*sbn)->v_jc = 0;
573 (*sbn)->jentptr = 0; 572 (*sbn)->jentptr = NULL;
574 (*sbn)->t_jc = WNN_KATAKANA; 573 (*sbn)->t_jc = WNN_KATAKANA;
575 (*sbn)->kangovect = ft->kango_hinsi_area[giji_no]; 574 (*sbn)->kangovect = ft->kango_hinsi_area[giji_no];
576 (*sbn)->hinsi_fk = giji_no; 575 (*sbn)->hinsi_fk = giji_no;
577 (*sbn)->status = WNN_GIJI; 576 (*sbn)->status = WNN_GIJI;
578 (*sbn)->status_bkwd = connect_flg; 577 (*sbn)->status_bkwd = connect_flg;
587 int endvect, /* 終端ベクタ */ 586 int endvect, /* 終端ベクタ */
588 int endvect1, /* 終端ベクタ */ 587 int endvect1, /* 終端ベクタ */
589 struct BZD **bzd, 588 struct BZD **bzd,
590 int buncnt) 589 int buncnt)
591 { 590 {
592 if ((*bzd = getbzdsp ()) == 0) 591 if ((*bzd = getbzdsp ()) == NULL)
593 return (-1); 592 return (-1);
594 if (set_kata_giji_sbn (yomi_sno, yomi_eno, endvect, endvect1, &(*bzd)->sbn) < 0) 593 if (set_kata_giji_sbn (yomi_sno, yomi_eno, endvect, endvect1, &(*bzd)->sbn) < 0)
595 return (-1); 594 return (-1);
596 (*bzd)->j_c = yomi_eno - 1; 595 (*bzd)->j_c = yomi_eno - 1;
597 (*bzd)->bend_m = yomi_sno; 596 (*bzd)->bend_m = yomi_sno;