Mercurial > octave
changeset 20680:8787e80a44b2
ensure va_end is executed before returning in value extractors
* ov.cc, ov.h (octave_value::string_value, octave_value::cell_value):
Don't return before calling va_end.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 05 Nov 2015 16:09:38 -0500 |
parents | 19d6f94c21cb |
children | b0b37f0d7e6d |
files | libinterp/octave-value/ov.cc libinterp/octave-value/ov.h |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/octave-value/ov.cc Thu Nov 05 15:06:52 2015 -0500 +++ b/libinterp/octave-value/ov.cc Thu Nov 05 16:09:38 2015 -0500 @@ -1553,10 +1553,12 @@ Cell octave_value::cell_value (const char *fmt, ...) const { + Cell retval; va_list args; va_start (args,fmt); - return rep->cell_value (fmt, args); + retval = rep->cell_value (fmt, args); va_end (args); + return retval; } // Define the idx_type_value function here instead of in ov.h to avoid
--- a/libinterp/octave-value/ov.h Thu Nov 05 15:06:52 2015 -0500 +++ b/libinterp/octave-value/ov.h Thu Nov 05 16:09:38 2015 -0500 @@ -901,10 +901,12 @@ std::string string_value (const char *fmt, ...) const { + std::string retval; va_list args; va_start (args,fmt); - return rep->string_value (fmt, args); + retval = rep->string_value (fmt, args); va_end (args); + return retval; } Array<std::string> cellstr_value (void) const