--- parser3/src/classes/array.C 2024/10/22 21:56:17 1.21 +++ parser3/src/classes/array.C 2024/10/23 23:53:06 1.23 @@ -17,7 +17,7 @@ #include "pa_vbool.h" #include "pa_vmethod_frame.h" -volatile const char * IDENT_ARRAY_C="$Id: array.C,v 1.21 2024/10/22 21:56:17 moko Exp $"; +volatile const char * IDENT_ARRAY_C="$Id: array.C,v 1.23 2024/10/23 23:53:06 moko Exp $"; // class @@ -63,7 +63,7 @@ static void _create_or_add(Request& r, M self_array.put(VArray::index(i.key()), i.value()); } } - self.invalidate(); + self_array.invalidate(); } } @@ -145,7 +145,7 @@ static void _join(Request& r, MethodPara } } } - self.invalidate(); + self_array.invalidate(); } #ifndef DOXYGEN @@ -494,7 +494,9 @@ static void _sql(Request& r, MethodParam VArray& self=GET_SELF(r, VArray); ArrayValue& array=self.array(); - array.clear(); self.invalidate(); // just in case if called as method + if(array.count()){ + array.clear(); array.invalidate(); // just in case if called as method + } if(sparse){ SparseArray_sql_event_handlers handlers(distinct, array, value_type); @@ -607,20 +609,18 @@ static void _count(Request& r, MethodPar } static void _append(Request& r, MethodParams& params) { - VArray& self=GET_SELF(r, VArray); - ArrayValue& array=self.array(); + ArrayValue& array=GET_SELF(r, VArray).array(); int count=params.count(); for(int i=0; i0) - self.array().clear(VArray::index(params.as_int(0, PARAM_INDEX, r))); + array.clear(VArray::index(params.as_int(0, PARAM_INDEX, r))); else - self.array().clear(); - self.invalidate(); + array.clear(); + array.invalidate(); } static void _remove(Request& r, MethodParams& params) { - VArray& self=GET_SELF(r, VArray); - self.array().remove(VArray::index(params.as_int(0, PARAM_INDEX, r))); - self.invalidate(); + ArrayValue& array=GET_SELF(r, VArray).array(); + array.remove(VArray::index(params.as_int(0, PARAM_INDEX, r))); + array.invalidate(); } static void _contains(Request& r, MethodParams& params) { @@ -856,7 +856,7 @@ static void _sort(Request& r, MethodPara for(pos=0; pos