Mercurial > hg > octave-shane > gnulib-hg
changeset 9835:69955b112e2e
Avoid failure when attempting to return empty iconv results on some platforms.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 30 Mar 2008 18:48:14 +0200 |
parents | b4f1e5627265 |
children | 69507e40ea4f |
files | ChangeLog lib/striconveh.c |
diffstat | 2 files changed, 12 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-03-30 Bruno Haible <bruno@clisp.org> + + Avoid failure when attempting to return empty iconv results on some + platforms. + * lib/striconveh.c (mem_cd_iconveh_internal): In the final memory + allocation, don't report ENOMEM when the resulting string is empty. + 2008-03-30 Bruno Haible <bruno@clisp.org> Fix buffer overrun.
--- a/lib/striconveh.c +++ b/lib/striconveh.c @@ -1,5 +1,5 @@ /* Character set conversion with error handling. - Copyright (C) 2001-2007 Free Software Foundation, Inc. + Copyright (C) 2001-2008 Free Software Foundation, Inc. Written by Bruno Haible and Simon Josefsson. This program is free software: you can redistribute it and/or modify @@ -870,9 +870,10 @@ /* Now the final memory allocation. */ if (result == tmpbuf) { + size_t memsize = length + extra_alloc; char *memory; - memory = (char *) malloc (length + extra_alloc); + memory = (char *) malloc (memsize > 0 ? memsize : 1); if (memory != NULL) { memcpy (memory, tmpbuf, length); @@ -887,9 +888,10 @@ else if (result != *resultp && length + extra_alloc < allocated) { /* Shrink the allocated memory if possible. */ + size_t memsize = length + extra_alloc; char *memory; - memory = (char *) realloc (result, length + extra_alloc); + memory = (char *) realloc (result, memsize > 0 ? memsize : 1); if (memory != NULL) result = memory; }