Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/lib/libedit/chartype.c,v rcsdiff: /ftp/cvs/cvsroot/src/lib/libedit/chartype.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.10.20.1 retrieving revision 1.11 diff -u -p -r1.10.20.1 -r1.11 --- src/lib/libedit/chartype.c 2015/04/14 05:30:24 1.10.20.1 +++ src/lib/libedit/chartype.c 2015/02/22 00:46:58 1.11 @@ -1,4 +1,4 @@ -/* $NetBSD: chartype.c,v 1.10.20.1 2015/04/14 05:30:24 snj Exp $ */ +/* $NetBSD: chartype.c,v 1.11 2015/02/22 00:46:58 christos Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -38,7 +38,7 @@ */ #include "config.h" #if !defined(lint) && !defined(SCCSID) -__RCSID("$NetBSD: chartype.c,v 1.10.20.1 2015/04/14 05:30:24 snj Exp $"); +__RCSID("$NetBSD: chartype.c,v 1.11 2015/02/22 00:46:58 christos Exp $"); #endif /* not lint && not SCCSID */ #include "el.h" #include @@ -47,44 +47,32 @@ __RCSID("$NetBSD: chartype.c,v 1.10.20.1 #ifdef WIDECHAR protected int -ct_conv_cbuff_resize(ct_buffer_t *conv, size_t csize) +ct_conv_buff_resize(ct_buffer_t *conv, size_t mincsize, size_t minwsize) { void *p; - - if (csize <= conv->csize) - return 0; - - conv->csize = csize; - - p = el_realloc(conv->cbuff, conv->csize * sizeof(*conv->cbuff)); - if (p == NULL) { - conv->csize = 0; - el_free(conv->cbuff); - conv->cbuff = NULL; - return -1; + if (mincsize > conv->csize) { + conv->csize = mincsize; + p = el_realloc(conv->cbuff, conv->csize * sizeof(*conv->cbuff)); + if (p == NULL) { + conv->csize = 0; + el_free(conv->cbuff); + conv->cbuff = NULL; + return -1; + } else + conv->cbuff = p; } - conv->cbuff = p; - return 0; -} - -protected int -ct_conv_wbuff_resize(ct_buffer_t *conv, size_t wsize) -{ - void *p; - - if (wsize <= conv->wsize) - return 0; - - conv->wsize = wsize; - p = el_realloc(conv->wbuff, conv->wsize * sizeof(*conv->wbuff)); - if (p == NULL) { - conv->wsize = 0; - el_free(conv->wbuff); - conv->wbuff = NULL; - return -1; + if (minwsize > conv->wsize) { + conv->wsize = minwsize; + p = el_realloc(conv->wbuff, conv->wsize * sizeof(*conv->wbuff)); + if (p == NULL) { + conv->wsize = 0; + el_free(conv->wbuff); + conv->wbuff = NULL; + return -1; + } else + conv->wbuff = p; } - conv->wbuff = p; return 0; } @@ -102,8 +90,8 @@ ct_encode_string(const Char *s, ct_buffe for (;;) { used = (ssize_t)(dst - conv->cbuff); if ((conv->csize - (size_t)used) < 5) { - if (ct_conv_cbuff_resize(conv, - conv->csize + CT_BUFSIZ) == -1) + if (ct_conv_buff_resize(conv, conv->csize + CT_BUFSIZ, + (size_t)0) == -1) return NULL; dst = conv->cbuff + used; } @@ -131,8 +119,8 @@ ct_decode_string(const char *s, ct_buffe if (len == (size_t)-1) return NULL; - if (conv->wsize < ++len) - if (ct_conv_wbuff_resize(conv, len + CT_BUFSIZ) == -1) + if (conv->csize < ++len) + if (ct_conv_buff_resize(conv, (size_t)0, len + CT_BUFSIZ) == -1) return NULL; ct_mbstowcs(conv->wbuff, s, conv->wsize); @@ -153,8 +141,9 @@ ct_decode_argv(int argc, const char *arg * the argv strings. */ for (i = 0, bufspace = 0; i < argc; ++i) bufspace += argv[i] ? strlen(argv[i]) + 1 : 0; - if (conv->wsize < ++bufspace) - if (ct_conv_wbuff_resize(conv, bufspace + CT_BUFSIZ) == -1) + if (conv->csize < ++bufspace) + if (ct_conv_buff_resize(conv, (size_t)0, bufspace + CT_BUFSIZ) + == -1) return NULL; wargv = el_malloc((size_t)argc * sizeof(*wargv));