]> granicus.if.org Git - php/commitdiff
Hopefully fix leaks...
authorSterling Hughes <sterling@php.net>
Sun, 24 Jun 2001 17:50:16 +0000 (17:50 +0000)
committerSterling Hughes <sterling@php.net>
Sun, 24 Jun 2001 17:50:16 +0000 (17:50 +0000)
ext/sablot/sablot.c

index dbe3fcc8739f1869a5d8b3c1721a4cc0189d268f..f2797eff8214da706cfddbc852311407c8eba0b1 100644 (file)
@@ -80,14 +80,18 @@ static zval *_php_sablot_resource_zval(long);
 /* ERROR Macros */
 
 #define SABLOT_FREE_ERROR_HANDLE(__handle)                \
-    if ((__handle).errors) {                              \
-        (__handle).errors = (__handle).errors_start.next; \
-        while ((__handle).errors) {                       \
-            S_FREE((__handle).errors->key);               \
-            S_FREE((__handle).errors->value);             \
-            (__handle).errors = (__handle).errors->next;  \
+    if ((__handle).errors) { \
+               struct _php_sablot_error *current = (__handle).errors; \
+               struct _php_sablot_error *next; \
+               \
+        current = (__handle).errors_start.next; \
+        while (current != NULL) {                       \
+                       next = current->next; \
+            S_FREE(current->key);               \
+            S_FREE(current->value);             \
+                       S_FREE(current); \
+            current = next;  \
         }                                                 \
-        S_FREE((__handle).errors);                        \
     }
 
 
@@ -542,19 +546,21 @@ PHP_FUNCTION(xslt_process)
         RETURN_FALSE;
     }
     
-    SablotGetResultArg(SABLOT_BASIC_HANDLE, "arg:/_output", &tRes);
+    ret = SablotGetResultArg(SABLOT_BASIC_HANDLE, "arg:/_output", &tRes);
     if (ret) {
         SABLOTG(last_errno) = ret;
-        RETURN_FALSE;
         
         if (tRes)
             SablotFree(tRes);
+
+               RETURN_FALSE;
     }
     
     if (tRes) {
         ZVAL_STRING(*result, tRes, 1);
         SablotFree(tRes);
     }
+
     RETURN_TRUE;
 }
 /* }}} */