--- lib/romaji.c.orig Mon Aug 8 03:05:59 2005 +++ lib/romaji.c Mon May 12 11:20:32 2008 @@ -1269,39 +1269,53 @@ char *romaji(char *string){ char *u; - u = (char *)calloc(sizeof(char), 2 * strlen(string)); - converter (k2r, u, string); + if(string && strlen(string)) { + u = (char *)calloc(sizeof(char), 2 * strlen(string)); + converter (k2r, u, string); + } else + u = strdup(""); return u; } char *hiragana(char *string){ char *u; - u = (char *)calloc(sizeof(char), 2 * strlen(string)); - converter (r2h, u, string); + if(string && strlen(string)) { + u = (char *)calloc(sizeof(char), 2 * strlen(string)); + converter (r2h, u, string); + } else + u = strdup(""); return u; } char *katakana(char *string){ char *u; - u = (char *)calloc(sizeof(char), 2 * strlen(string)); - converter (r2k, u, string); + if(string && strlen(string)) { + u = (char *)calloc(sizeof(char), 2 * strlen(string)); + converter (r2k, u, string); + } else + u = strdup(""); return u; } char *katakana2hiragana(char *string){ char *u; - - u = (char *)calloc(sizeof(char), 2 * strlen(string)); - converter (k2h, u, string); + if(string && strlen(string)) { + u = (char *)calloc(sizeof(char), 2 * strlen(string)); + converter (k2h, u, string); + } else + u = strdup(""); return u; } char *hiragana2katakana(char *string){ char *u; - u = (char *)calloc(sizeof(char), 2 * strlen(string)); - converter (h2k, u, string); + if(string && strlen(string)) { + u = (char *)calloc(sizeof(char), 2 * strlen(string)); + converter (h2k, u, string); + } else + u = strdup(""); return u; } --- lib/literal.c.orig Thu Jan 29 12:25:33 2004 +++ lib/literal.c Mon May 12 11:20:38 2008 @@ -220,6 +220,7 @@ perror("iconv"); exit(1); } + *out_p = '\0'; } while (in_size != 0); len = strlen(buf); /* XXX this memory will leak */