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