This is an automated email from the git hooks/post-receive script.

hmmr-guest pushed a commit to branch master
in repository cnrun.

commit e49a4ec3a949588645b9f8cbfee171023e2dd0e7
Author: Andrei Zavada <[email protected]>
Date:   Sun Sep 22 15:31:09 2013 +0300

    check for return value of regcomp; use range-based for
---
 upstream/src/libcn/model-struct.cc |  146 +++++++++++++++++++++---------------
 upstream/src/runner-interpreter.cc |   46 +++++++-----
 2 files changed, 114 insertions(+), 78 deletions(-)

diff --git a/upstream/src/libcn/model-struct.cc 
b/upstream/src/libcn/model-struct.cc
index d9c82c3..8feecd0 100644
--- a/upstream/src/libcn/model-struct.cc
+++ b/upstream/src/libcn/model-struct.cc
@@ -380,7 +380,7 @@ void
 CNRun::CModel::
 unregister_listener( C_BaseUnit *u)
 {
-       auto U = find( lisn_unit_list.begin(), lisn_unit_list.end(), u);
+       const auto& U = find( lisn_unit_list.begin(), lisn_unit_list.end(), u);
        if ( U != lisn_unit_list.end() )
                lisn_unit_list.erase( U);
 }
@@ -667,7 +667,7 @@ add_synapse_species( TUnitType ytype, C_BaseNeuron *src, 
C_BaseNeuron *tgt,
 
       // consider cloning
        if ( !(_status & CN_MDL_DONT_COALESCE) && allow_clone && 
src->_axonal_harbour.size() )
-               for ( auto &L : src->_axonal_harbour )
+               for ( auto& L : src->_axonal_harbour )
                        if ( L->_type == ytype &&
                             L->is_not_altered() )
                                return L->clone_to_target( tgt, g);
@@ -922,16 +922,19 @@ int
 CNRun::CModel::
 process_listener_tags( const list<STagGroupListener> &Listeners)
 {
-       for ( auto P = Listeners.begin(); P != Listeners.end(); P++ ) {
-               regex_t RE;
-               regcomp( &RE, P->pattern.c_str(), REG_EXTENDED);
+       regex_t RE;
+       for ( auto& P : Listeners ) {
+               if (0 != regcomp( &RE, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB)) {
+                       fprintf( stderr, "Invalid regexp in 
process_listener_tags: \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
                for_all_units (U) {
                        if ( regexec( &RE, (*U)->_label, 0, 0, 0) == 0 ) {
-                               if ( P->enable ) {
-                                       (*U) -> start_listening( P->bits);
+                               if ( P.enable ) {
+                                       (*U) -> start_listening( P.bits);
                                        if ( verbosely > 3 )
                                                printf( " (unit \"%s\" 
listening%s)\n",
-                                                       (*U)->_label, P->bits & 
CN_ULISTENING_1VARONLY ? ", to one var only" :"");
+                                                       (*U)->_label, P.bits & 
CN_ULISTENING_1VARONLY ? ", to one var only" :"");
                                } else {
                                        (*U) -> stop_listening();
                                        if ( verbosely > 3 )
@@ -949,14 +952,17 @@ int
 CNRun::CModel::
 process_spikelogger_tags( const list<STagGroupSpikelogger> &Spikeloggers)
 {
-       for ( auto P = Spikeloggers.begin(); P != Spikeloggers.end(); P++ ) {
-               regex_t RE;
-               regcomp( &RE, P->pattern.c_str(), REG_EXTENDED);
+       regex_t RE;
+       for ( auto& P : Spikeloggers ) {
+               if (0 != regcomp( &RE, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB)) {
+                       fprintf( stderr, "Invalid regexp in 
process_spikelogger_tags: \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
                for_all_standalone_neurons (N) {
                        if ( regexec( &RE, (*N)->_label, 0, 0, 0) == 0 ) {
-                               if ( P->enable ) {
-                                       bool log_sdf = !(P->period == 0. || 
P->sigma == 0.);
-                                       if ( ( log_sdf && 
!(*N)->enable_spikelogging_service( P->period, P->sigma, P->from))
+                               if ( P.enable ) {
+                                       bool log_sdf = !(P.period == 0. || 
P.sigma == 0.);
+                                       if ( ( log_sdf && 
!(*N)->enable_spikelogging_service( P.period, P.sigma, P.from))
                                             ||
                                             (!log_sdf && 
!(*N)->enable_spikelogging_service()) ) {
                                                fprintf( stderr, "Cannot have 
\"%s\" log spikes because it is not a conductance-based neuron (of type %s)\n",
@@ -968,14 +974,14 @@ process_spikelogger_tags( const 
list<STagGroupSpikelogger> &Spikeloggers)
 
                                if ( verbosely > 3 )
                                        printf( " (%sabling spike logging for 
standalone neuron \"%s\")\n",
-                                               P->enable ? "en" : "dis", 
(*N)->_label);
+                                               P.enable ? "en" : "dis", 
(*N)->_label);
                        }
                }
                for_all_hosted_neurons (N) {
                        if ( regexec( &RE, (*N)->_label, 0, 0, 0) == 0 ) {
-                               if ( P->enable ) {
-                                       bool log_sdf = !(P->period == 0. || 
P->sigma == 0.);
-                                       if ( ( log_sdf && 
!(*N)->enable_spikelogging_service( P->period, P->sigma, P->from))
+                               if ( P.enable ) {
+                                       bool log_sdf = !(P.period == 0. || 
P.sigma == 0.);
+                                       if ( ( log_sdf && 
!(*N)->enable_spikelogging_service( P.period, P.sigma, P.from))
                                             ||
                                             (!log_sdf && 
!(*N)->enable_spikelogging_service()) ) {
                                                fprintf( stderr, "Cannot have 
\"%s\" log spikes because it is not a conductance-based neuron (of type %s)\n",
@@ -987,7 +993,7 @@ process_spikelogger_tags( const list<STagGroupSpikelogger> 
&Spikeloggers)
 
                                if ( verbosely > 3 )
                                        printf( " (%sabling spike logging for 
hosted neuron \"%s\")\n",
-                                               P->enable ? "en" : "dis", 
(*N)->_label);
+                                               P.enable ? "en" : "dis", 
(*N)->_label);
                        }
                }
        }
@@ -1001,9 +1007,12 @@ CNRun::CModel::
 process_putout_tags( const list<STagGroup> &ToRemove)
 {
       // execute some
-       for ( auto P = ToRemove.begin(); P != ToRemove.end(); P++ ) {
-               regex_t RE;
-               regcomp( &RE, P->pattern.c_str(), REG_EXTENDED);
+       regex_t RE;
+       for ( auto& P : ToRemove ) {
+               if (0 != regcomp( &RE, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB)) {
+                       fprintf( stderr, "Invalid regexp in 
process_putout_tags: \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
                for_all_units (U) {
                        if ( regexec( &RE, (*U)->_label, 0, 0, 0) == 0 ) {
                                if ( verbosely > 2 )
@@ -1029,9 +1038,12 @@ CNRun::CModel::
 process_decimate_tags( const list<STagGroupDecimate> &ToDecimate)
 {
       // decimate others
-       for ( auto P = ToDecimate.begin(); P != ToDecimate.end(); P++ ) {
-               regex_t RE;
-               regcomp( &RE, P->pattern.c_str(), REG_EXTENDED);
+       regex_t RE;
+       for ( auto& P : ToDecimate ) {
+               if (0 != regcomp( &RE, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB)) {
+                       fprintf( stderr, "Invalid regexp in 
process_decimate_tags: \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
 
              // collect group
                vector<C_BaseUnit*> dcmgroup;
@@ -1041,12 +1053,12 @@ process_decimate_tags( const list<STagGroupDecimate> 
&ToDecimate)
                random_shuffle( dcmgroup.begin(), dcmgroup.end());
 
              // execute
-               size_t  to_execute = rint( dcmgroup.size() * P->fraction), n = 
to_execute;
+               size_t  to_execute = rint( dcmgroup.size() * P.fraction), n = 
to_execute;
                while ( n-- )
                        delete dcmgroup[n];
 
                if ( verbosely > 3 )
-                       printf( " (decimated %4.1f%% (%zu units) of %s)\n", 
P->fraction*100, to_execute, P->pattern.c_str());
+                       printf( " (decimated %4.1f%% (%zu units) of %s)\n", 
P.fraction*100, to_execute, P.pattern.c_str());
 
        }
 
@@ -1064,9 +1076,12 @@ int
 CNRun::CModel::
 process_paramset_static_tags( const list<STagGroupNeuronParmSet> &tags)
 {
-       for ( auto P = tags.begin(); P != tags.end(); P++ ) {
-               regex_t RE;
-               regcomp( &RE, P->pattern.c_str(), REG_EXTENDED);
+       regex_t RE;
+       for ( auto& P : tags ) {
+               if (0 != regcomp( &RE, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB)) {
+                       fprintf( stderr, "Invalid regexp in 
process_paramset_static_tags: \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
 
                vector<string> current_tag_assigned_labels;
 
@@ -1078,23 +1093,23 @@ process_paramset_static_tags( const 
list<STagGroupNeuronParmSet> &tags)
 
                        int p_d = -1;
                        C_BaseUnit::TSinkType kind = (C_BaseUnit::TSinkType)-1;
-                       if ( (p_d = (*U)->param_idx_by_sym( P->parm.c_str())) > 
-1 )
+                       if ( (p_d = (*U)->param_idx_by_sym( P.parm.c_str())) > 
-1 )
                                kind = C_BaseUnit::SINK_PARAM;
-                       else if ( (p_d = (*U)->var_idx_by_sym( 
P->parm.c_str())) > -1 )
+                       else if ( (p_d = (*U)->var_idx_by_sym( P.parm.c_str())) 
> -1 )
                                kind = C_BaseUnit::SINK_VAR;
                        if ( p_d == -1 ) {
                                fprintf( stderr, "%s \"%s\" (type \"%s\") has 
no parameter or variable named \"%s\"\n",
-                                        (*U)->class_name(), (*U)->label(), 
(*U)->species(), P->parm.c_str());
+                                        (*U)->class_name(), (*U)->label(), 
(*U)->species(), P.parm.c_str());
                                continue;
                        }
 
                        switch ( kind ) {
                        case C_BaseUnit::SINK_PARAM:
-                               (*U)->param_value(p_d) = P->enable ? P->value : 
__CNUDT[(*U)->type()].stock_param_values[p_d];
+                               (*U)->param_value(p_d) = P.enable ? P.value : 
__CNUDT[(*U)->type()].stock_param_values[p_d];
                                (*U)->param_changed_hook();
                            break;
                        case C_BaseUnit::SINK_VAR:
-                               (*U)->  var_value(p_d) = P->value;
+                               (*U)->  var_value(p_d) = P.value;
                            break;
                        }
 
@@ -1102,7 +1117,7 @@ process_paramset_static_tags( const 
list<STagGroupNeuronParmSet> &tags)
                }
 
                if ( current_tag_assigned_labels.empty() ) {
-                       fprintf( stderr, "No neuron labelled matching 
\"%s\"\n", P->pattern.c_str());
+                       fprintf( stderr, "No neuron labelled matching 
\"%s\"\n", P.pattern.c_str());
                        return -2;
                }
 
@@ -1111,7 +1126,7 @@ process_paramset_static_tags( const 
list<STagGroupNeuronParmSet> &tags)
                        for ( auto S = current_tag_assigned_labels.begin(); S 
!= current_tag_assigned_labels.end(); S++ )
                                printf( "%s%s",
                                        (S == 
current_tag_assigned_labels.begin()) ? "" : ", ", S->c_str());
-                       printf( " {%s} = %g\n", P->parm.c_str(), P->value);
+                       printf( " {%s} = %g\n", P.parm.c_str(), P.value);
                }
        }
        return 0;
@@ -1125,17 +1140,23 @@ int
 CNRun::CModel::
 process_paramset_static_tags( const list<STagGroupSynapseParmSet> &tags)
 {
-       for ( list<STagGroupSynapseParmSet>::const_iterator P = tags.begin(); P 
!= tags.end(); P++ ) {
+       for ( auto& P : tags ) {
                regex_t REsrc, REtgt;
-               regcomp( &REsrc, P->pattern.c_str(), REG_EXTENDED);   // 
P->pattern acting as src
-               regcomp( &REtgt, P->target.c_str(), REG_EXTENDED);
+               if (0 != regcomp( &REsrc, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB) ) {  // P->pattern acting as src
+                       fprintf( stderr, "Invalid regexp in 
process_paramset_static_tags (src): \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
+               if (0 != regcomp( &REtgt, P.target.c_str(), REG_EXTENDED | 
REG_NOSUB) ) {
+                       fprintf( stderr, "Invalid regexp in 
process_paramset_static_tags (tgt): \"%s\"\n", P.target.c_str());
+                       return -1;
+               }
 
                vector<string> current_tag_assigned_labels;
 
-               bool do_gsyn = (P->parm == "gsyn");
+               bool do_gsyn = (P.parm == "gsyn");
 
                if ( verbosely > 5 )
-                       printf( "== setting %s -> %s {%s} = %g...\n", 
P->pattern.c_str(), P->target.c_str(), P->parm.c_str(), P->value);
+                       printf( "== setting %s -> %s {%s} = %g...\n", 
P.pattern.c_str(), P.target.c_str(), P.parm.c_str(), P.value);
 
                for_all_neurons (Us) {
                        if ( regexec( &REsrc, (*Us)->label(), 0, 0, 0) == 0 )
@@ -1149,20 +1170,20 @@ process_paramset_static_tags( const 
list<STagGroupSynapseParmSet> &tags)
                                        continue;
 
                                if ( do_gsyn ) {
-                                       y->set_g_on_target( 
*static_cast<C_BaseNeuron*>(*Ut), P->value);
+                                       y->set_g_on_target( 
*static_cast<C_BaseNeuron*>(*Ut), P.value);
                                        current_tag_assigned_labels.push_back( 
y->label());
                                        continue;
                                }
 
                                int p_d = -1;
                                C_BaseUnit::TSinkType kind = 
(C_BaseUnit::TSinkType)-1;
-                               if ( (p_d = y->param_idx_by_sym( 
P->parm.c_str())) > -1 )
+                               if ( (p_d = y->param_idx_by_sym( 
P.parm.c_str())) > -1 )
                                        kind = C_BaseUnit::SINK_PARAM;
-                               else if ( (p_d = y->var_idx_by_sym( 
P->parm.c_str())) > -1 )
+                               else if ( (p_d = y->var_idx_by_sym( 
P.parm.c_str())) > -1 )
                                        kind = C_BaseUnit::SINK_VAR;
                                if ( p_d == -1 ) {
                                        fprintf( stderr, "%s \"%s\" (type 
\"%s\") has no parameter or variable named \"%s\"\n",
-                                                y->class_name(), y->label(), 
y->species(), P->parm.c_str());
+                                                y->class_name(), y->label(), 
y->species(), P.parm.c_str());
                                        continue;
                                }
 
@@ -1171,11 +1192,11 @@ process_paramset_static_tags( const 
list<STagGroupSynapseParmSet> &tags)
                                        if ( y->_targets.size() > 1 ) {
                                                y = y->make_clone_independent( 
static_cast<C_BaseNeuron*>(*Ut));  // lest brethren synapses to other targets 
be clobbered
                                        }
-                                       y->param_value(p_d) = P->enable ? 
P->value : __CNUDT[y->type()].stock_param_values[p_d];
+                                       y->param_value(p_d) = P.enable ? 
P.value : __CNUDT[y->type()].stock_param_values[p_d];
                                        y->param_changed_hook();
                                    break;
                                case C_BaseUnit::SINK_VAR:
-                                       y->  var_value(p_d) = P->value;
+                                       y->  var_value(p_d) = P.value;
                                    break;
                                }
 
@@ -1183,7 +1204,7 @@ process_paramset_static_tags( const 
list<STagGroupSynapseParmSet> &tags)
                        }
                }
                if ( current_tag_assigned_labels.empty() ) {
-                       fprintf( stderr, "No synapse connecting any of \"%s\" 
to \"%s\"\n", P->pattern.c_str(), P->target.c_str());
+                       fprintf( stderr, "No synapse connecting any of \"%s\" 
to \"%s\"\n", P.pattern.c_str(), P.target.c_str());
                        return -2;
                }
 
@@ -1192,7 +1213,7 @@ process_paramset_static_tags( const 
list<STagGroupSynapseParmSet> &tags)
                        for ( auto S = current_tag_assigned_labels.begin(); S 
!= current_tag_assigned_labels.end(); S++ )
                                printf( "%s%s",
                                        (S == 
current_tag_assigned_labels.begin()) ? "" : ", ", S->c_str());
-                       printf( " {%s} = %g\n", P->parm.c_str(), P->value);
+                       printf( " {%s} = %g\n", P.parm.c_str(), P.value);
                }
        }
 
@@ -1242,9 +1263,12 @@ int
 CNRun::CModel::
 process_paramset_source_tags( const list<STagGroupSource> &tags)
 {
-       for ( list<STagGroupSource>::const_iterator P = tags.begin(); P != 
tags.end(); P++ ) {
-               regex_t RE;
-               regcomp( &RE, P->pattern.c_str(), REG_EXTENDED);
+       regex_t RE;
+       for ( auto& P : tags ) {
+               if (0 != regcomp( &RE, P.pattern.c_str(), REG_EXTENDED | 
REG_NOSUB)) {
+                       fprintf( stderr, "Invalid regexp in 
process_paramset_source_tags: \"%s\"\n", P.pattern.c_str());
+                       return -1;
+               }
 
                for_all_units (U) {
                        if ( regexec( &RE, (*U)->label(), 0, 0, 0) == 0 )
@@ -1252,26 +1276,26 @@ process_paramset_source_tags( const 
list<STagGroupSource> &tags)
 
                        int p_d = -1;
                        C_BaseUnit::TSinkType kind = (C_BaseUnit::TSinkType)-1;
-                       if ( (p_d = (*U)->param_idx_by_sym( P->parm.c_str())) > 
-1 )
+                       if ( (p_d = (*U)->param_idx_by_sym( P.parm.c_str())) > 
-1 )
                                kind = C_BaseUnit::SINK_PARAM;
-                       else if ( (p_d = (*U)->var_idx_by_sym( 
P->parm.c_str())) > -1 )
+                       else if ( (p_d = (*U)->var_idx_by_sym( P.parm.c_str())) 
> -1 )
                                kind = C_BaseUnit::SINK_VAR;
                        if ( p_d == -1 ) {
                                fprintf( stderr, "%s \"%s\" (type \"%s\") has 
no parameter or variable named \"%s\"\n",
-                                        (*U)->class_name(), (*U)->label(), 
(*U)->species(), P->parm.c_str());
+                                        (*U)->class_name(), (*U)->label(), 
(*U)->species(), P.parm.c_str());
                                continue;
                        }
 
-                       if ( P->enable ) {
-                               (*U) -> attach_source( P->source, kind, p_d);
+                       if ( P.enable ) {
+                               (*U) -> attach_source( P.source, kind, p_d);
                                if ( verbosely > 3 )
                                        printf( "Connected source \"%s\" to 
\"%s\"{%s}\n",
-                                               P->source->name.c_str(), 
(*U)->label(), P->parm.c_str());
+                                               P.source->name.c_str(), 
(*U)->label(), P.parm.c_str());
                        } else {
-                               (*U) -> detach_source( P->source, kind, p_d);
+                               (*U) -> detach_source( P.source, kind, p_d);
                                if ( verbosely > 3 )
                                        printf( "Disconnected source \"%s\" 
from \"%s\"{%s}\n",
-                                               P->source->name.c_str(), 
(*U)->label(), P->parm.c_str());
+                                               P.source->name.c_str(), 
(*U)->label(), P.parm.c_str());
                        }
                }
        }
diff --git a/upstream/src/runner-interpreter.cc 
b/upstream/src/runner-interpreter.cc
index ee4b895..610cac7 100644
--- a/upstream/src/runner-interpreter.cc
+++ b/upstream/src/runner-interpreter.cc
@@ -280,8 +280,11 @@ do_single_cmd( const char* raw,
                CHECK_MODEL;
                if ( !operand )
                        operand = const_cast<char*>(".*");
-        regex_t RE;
-        regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB);
+               regex_t RE;
+               if ( 0 != regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB) ) {
+                       LOG( fname, lineno, -1, "Invalid regexp for 
`reset_state_units' arg");
+                       return CN_INTERP_PARSEERROR;
+               }
                size_t cnt = 0;
                for_model_units (Model,U)
                        if ( regexec( &RE, (*U)->label(), 0, 0, 0) == 0 ) {
@@ -686,8 +689,11 @@ do_single_cmd( const char* raw,
                if ( !operand )
                        operand = const_cast<char*>(".*");
 
-        regex_t RE;
-        regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB);
+               regex_t RE;
+               if ( 0 != regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB) ) {
+                       LOG( fname, lineno, -1, "Invalid regexp for 
`show_units' arg");
+                       return CN_INTERP_PARSEERROR;
+               }
                size_t cnt = 0;
                for_model_units (Model,U)
                        if ( regexec( &RE, (*U)->label(), 0, 0, 0) == 0 ) {
@@ -724,18 +730,21 @@ do_single_cmd( const char* raw,
        } else if ( strcmp( cmd, cnrun_cmd[CNCMD_show_vars]) == 0 ) {
                if ( !operand )
                        operand = const_cast<char*>(".*");
-        regex_t RE;
-        regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB);
+               regex_t RE;
+               if ( 0 != regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB) ) {
+                       LOG( fname, lineno, -1, "Invalid regexp for `show_vars' 
arg");
+                       return CN_INTERP_PARSEERROR;
+               }
                size_t  cnt = 0;
                size_t  longest_id = 0;
-               for ( list<SVariable>::iterator V = varlist.begin(); V != 
varlist.end(); V++ )
-            if ( regexec( &RE, V->name, 0, 0, 0) == 0 )
-                               if ( longest_id < strlen( V->name) )
-                                       longest_id = strlen( V->name);
-               for ( list<SVariable>::iterator V = varlist.begin(); V != 
varlist.end(); V++ )
-            if ( regexec( &RE, V->name, 0, 0, 0) == 0 ) {
-                               Log->msg( 0, nullptr, "  %*s = %g", longest_id, 
V->name, V->value);
-                               cnt++;
+               for ( auto& V : varlist )
+                       if ( regexec( &RE, V.name, 0, 0, 0) == 0 )
+                               if ( longest_id < strlen( V.name) )
+                                       longest_id = strlen( V.name);
+               for ( auto& V : varlist )
+                       if ( regexec( &RE, V.name, 0, 0, 0) == 0 ) {
+                               Log->msg( 0, nullptr, "  %*s = %g", longest_id, 
V.name, V.value);
+                               ++cnt;
                        }
                if ( cnt > 1 )
                        Log->msg_( 0, nullptr, "---------- %u variables\n", 
cnt);
@@ -745,10 +754,13 @@ do_single_cmd( const char* raw,
                if ( !operand )
                        varlist.clear();
                else {
-            regex_t RE;
-            regcomp( &RE, operand, REG_EXTENDED | REG_NOSUB);
+                       regex_t RE;
+                       if ( 0 != regcomp( &RE, operand, REG_EXTENDED | 
REG_NOSUB) ) {
+                               LOG( fname, lineno, -1, "Invalid regexp for 
`clear_vars' arg");
+                               return CN_INTERP_PARSEERROR;
+                       }
                        for ( list<SVariable>::iterator V = varlist.begin(); V 
!= varlist.end(); V++ )
-                if ( regexec( &RE, V->name, 0, 0, 0) == 0 ) {
+                               if ( regexec( &RE, V->name, 0, 0, 0) == 0 ) {
                                        varlist.erase( V);
                                        break;
                                }

-- 
Alioth's /git/debian-med/git-commit-notice on 
/srv/git.debian.org/git/debian-med/cnrun.git

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to