null+****@clear*****
null+****@clear*****
2011年 10月 12日 (水) 11:51:11 JST
Kouhei Sutou 2011-10-12 02:51:11 +0000 (Wed, 12 Oct 2011)
New Revision: f1d030d1392f1cceca769438f6917aa7f0915158
Log:
[libedit] add error check for wcrtomb().
Modified files:
src/groonga.c
Modified: src/groonga.c (+7 -1)
===================================================================
--- src/groonga.c 2011-10-12 02:46:15 +0000 (c46402b)
+++ src/groonga.c 2011-10-12 02:51:11 +0000 (1d8eedb)
@@ -195,7 +195,13 @@ prompt(grn_ctx *ctx, grn_obj *buf)
wcrtomb(NULL, L'\0', &ps);
for (i = 0; i < nchar; i++) {
multibyte_len = wcrtomb(multibyte_buf, line[i], &ps);
- GRN_TEXT_PUT(ctx, buf, multibyte_buf, multibyte_len);
+ if (multibyte_len == (size_t)-1) {
+ GRN_LOG(ctx, GRN_LOG_WARNING,
+ "[prompt][libedit] failed to read input: %s", strerror(errno));
+ rc = GRN_INVALID_ARGUMENT;
+ } else {
+ GRN_TEXT_PUT(ctx, buf, multibyte_buf, multibyte_len);
+ }
}
rc = GRN_SUCCESS;
len = GRN_TEXT_LEN(buf);