Mercurial > hg > octave-lyh
diff src/utils.cc @ 10257:cd550069240e
assume vsnprintf from gnulib; use sstream instead of snprintf
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 03 Feb 2010 06:34:29 -0500 |
parents | 2d47356a7a1a |
children | 57a59eae83cc |
line wrap: on
line diff
--- a/src/utils.cc +++ b/src/utils.cc @@ -1225,11 +1225,7 @@ static char *buf = 0; -#if defined (HAVE_C99_VSNPRINTF) - size_t nchars = 0; -#else int nchars = 0; -#endif if (! buf) buf = new char [size]; @@ -1237,43 +1233,6 @@ if (! buf) return 0; -#if defined (HAVE_C99_VSNPRINTF) - - // Note that the caller is responsible for calling va_end on args. - // We will do it for saved_args. - - va_list saved_args; - - SAVE_ARGS (saved_args, args); - - BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_FOR_VSNPRINTF; - - nchars = octave_raw_vsnprintf (buf, size, fmt, args); - - END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - - if (nchars >= size) - { - size = nchars + 1; - - delete [] buf; - - buf = new char [size]; - - if (buf) - { - BEGIN_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE_FOR_VSNPRINTF; - - octave_raw_vsnprintf (buf, size, fmt, saved_args); - - END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - } - } - - va_end (saved_args); - -#else - while (1) { va_list saved_args; @@ -1288,23 +1247,21 @@ END_INTERRUPT_IMMEDIATELY_IN_FOREIGN_CODE; - if (nchars > -1 && nchars < size-1) - return buf; + if (nchars > -1 && nchars < size) + break; else - { - delete [] buf; - - size *= 2; + { + delete [] buf; - buf = new char [size]; + size = nchars + 1;; + + buf = new char [size]; - if (! buf) - return 0; - } + if (! buf) + return 0; + } } -#endif - return buf; }