Procházet zdrojové kódy

htable: release pkg memory before returning

resets 'first' when esize == 0
lazedo před 8 roky
rodič
revize
2d771f563d
1 změnil soubory, kde provedl 9 přidání a 9 odebrání
  1. 9 9
      src/modules/htable/ht_var.c

+ 9 - 9
src/modules/htable/ht_var.c

@@ -48,17 +48,17 @@ int pv_get_ht_cell(struct sip_msg *msg,  pv_param_t *param,
 		return -1;
 	}
 	htc = ht_cell_pkg_copy(hpv->ht, &htname, _htc_local);
+	if(_htc_local!=htc)
+	{
+		ht_cell_pkg_free(_htc_local);
+		_htc_local=htc;
+	}
 	if(htc==NULL)
 	{
 		if(hpv->ht->flags==PV_VAL_INT)
 			return pv_get_sintval(msg, param, res, hpv->ht->initval.n);
 		return pv_get_null(msg, param, res);
 	}
-	if(_htc_local!=htc)
-	{
-		ht_cell_pkg_free(_htc_local);
-		_htc_local=htc;
-	}
 
 	if(htc->flags&AVP_VAL_STR)
 		return pv_get_strval(msg, param, res, &htc->value.s);
@@ -326,15 +326,15 @@ int pv_get_ht_add(struct sip_msg *msg,  pv_param_t *param,
 		return -1;
 	}
 	htc = ht_cell_value_add(hpv->ht, &htname, val, 1, _htc_local);
-	if(htc==NULL)
-	{
-		return pv_get_null(msg, param, res);
-	}
 	if(_htc_local!=htc)
 	{
 		ht_cell_pkg_free(_htc_local);
 		_htc_local=htc;
 	}
+	if(htc==NULL)
+	{
+		return pv_get_null(msg, param, res);
+	}
 
 	if(htc->flags&AVP_VAL_STR)
 		return pv_get_null(msg, param, res);