# HG changeset patch # User John W. Eaton # Date 1236451539 18000 # Node ID d75f4ee0538dd7f8417d9aab0246a17dca147b57 # Parent e1d732d68b208ca1d8429a387a0882b72d6c40e5 qz.cc (Fqz): avoid maybe clobbred by vfork warning from GCC diff -r e1d732d68b20 -r d75f4ee0538d src/ChangeLog --- a/src/ChangeLog Sat Mar 07 13:29:12 2009 -0500 +++ b/src/ChangeLog Sat Mar 07 13:45:39 2009 -0500 @@ -1,5 +1,8 @@ 2009-03-07 John W. Eaton + * DLD-FUNCTIONS/qz.cc (Fqz): Avoid "maybe clobbered by vfork" + warning from GCC. + * version.h (OCTAVE_VERSION): Now 3.1.54. (OCTAVE_API_VERSION): Now api-v36. (OCTAVE_RELEASE_DATE): Now 2009-03-07. diff -r e1d732d68b20 -r d75f4ee0538d src/DLD-FUNCTIONS/qz.cc --- a/src/DLD-FUNCTIONS/qz.cc Sat Mar 07 13:29:12 2009 -0500 +++ b/src/DLD-FUNCTIONS/qz.cc Sat Mar 07 13:45:39 2009 -0500 @@ -306,11 +306,11 @@ #endif // Determine ordering option - std::string ord_job; + volatile char ord_job = 0; static double safmin; if (nargin == 2) - ord_job = "N"; + ord_job = 'N'; else if (!args(2).is_string ()) { error ("qz: argument 3 must be a string"); @@ -318,13 +318,15 @@ } else { - ord_job = args(2).string_value (); + std::string tmp = args(2).string_value (); + + if (! tmp.empty ()) + ord_job = tmp[0]; - if (ord_job[0] != 'N' - && ord_job[0] != 'S' - && ord_job[0] != 'B' - && ord_job[0] != '+' - && ord_job[0] != '-') + if (! (ord_job == 'N' || ord_job == 'n' + || ord_job == 'S' || ord_job == 's' + || ord_job == 'B' || ord_job == 'b' + || ord_job == '+' || ord_job == '-')) { error ("qz: invalid order option"); return retval; @@ -603,7 +605,7 @@ } // order the QZ decomposition? - if (ord_job[0] != 'N') + if (! (ord_job == 'N' || ord_job == 'n')) { if (complex_case) { @@ -614,20 +616,23 @@ else { #ifdef DEBUG_SORT - std::cout << "qz: ordering eigenvalues: ord_job = " << ord_job[0] << std::endl; + std::cout << "qz: ordering eigenvalues: ord_job = " + << ord_job << std::endl; #endif // declared static to avoid vfork/long jump compiler complaints static sort_function sort_test; sort_test = 0; - switch (ord_job[0]) + switch (ord_job) { case 'S': + case 's': sort_test = &fin; break; case 'B': + case 'b': sort_test = &fout; break;