Author: yamakenz
Date: Sun Jul 22 02:51:07 2007
New Revision: 4771
Modified:
trunk/uim/canna.c
Log:
* uim/canna.c
- (struct canna_context, create_context, release_context):
Replace array diclist with pointer and make optional to
UIM_CANNA_DEBUG
Modified: trunk/uim/canna.c
==============================================================================
--- trunk/uim/canna.c (original)
+++ trunk/uim/canna.c Sun Jul 22 02:51:07 2007
@@ -65,7 +65,9 @@
};
struct canna_context {
- char diclist[BUFSIZE];
+#ifdef UIM_CANNA_DEBUG
+ char *diclist;
+#endif
int rk_context_id;
int rk_mode;
@@ -119,7 +121,7 @@
struct canna_context *cc;
uim_lisp cc_;
int dic_num;
- char *buf;
+ char *diclist, *buf;
int buflen, i;
if (rk_initialized == -1) {
@@ -140,16 +142,18 @@
cc->rk_mode = (RK_XFER << RK_XFERBITS) | RK_KFER;
cc->max_cand_num_list = NULL;
cc->segment_num = -1;
- cc->diclist[0] = '\0';
- dic_num = RkGetDicList(cc->rk_context_id, cc->diclist, BUFSIZE);
+ diclist = malloc(BUFSIZE);
+ diclist[0] = '\0';
+
+ dic_num = RkGetDicList(cc->rk_context_id, diclist, BUFSIZE);
if (dic_num == ERR) {
/* invalid context number */
return uim_scm_f();
}
/* buf[] = "dicname1\0dicname2\0dicname3\0...dicname_n\0\0" */
- buf = cc->diclist;
+ buf = diclist;
for (i = 0; i < dic_num; i++) {
if (RkMountDic(cc->rk_context_id, buf, 0) == ERR) {
fprintf(stderr, "Failed to mount dictionary %s\n", buf);
@@ -157,6 +161,11 @@
buflen = strlen(buf) + sizeof((char)'\0');
buf += buflen;
}
+#ifdef UIM_CANNA_DEBUG
+ cc->diclist = diclist;
+#else
+ free(diclist);
+#endif
cc_ = uim_scm_make_ptr(cc);
context_list = uim_scm_callf("cons", "oo", cc_, context_list);
@@ -182,6 +191,9 @@
} else {
ok = uim_scm_f();
}
+#ifdef UIM_CANNA_DEBUG
+ free(cc->diclist);
+#endif
free(cc);
return ok;