dmitry          Thu Apr 15 05:35:28 2004 EDT

  Modified files:              
    /php-src/ext/soap   soap.c 
  Log:
  Calls to zend_exception_error() were removed.
  
  
http://cvs.php.net/diff.php/php-src/ext/soap/soap.c?r1=1.99&r2=1.100&ty=u
Index: php-src/ext/soap/soap.c
diff -u php-src/ext/soap/soap.c:1.99 php-src/ext/soap/soap.c:1.100
--- php-src/ext/soap/soap.c:1.99        Fri Apr  2 06:12:44 2004
+++ php-src/ext/soap/soap.c     Thu Apr 15 05:35:27 2004
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: soap.c,v 1.99 2004/04/02 11:12:44 dmitry Exp $ */
+/* $Id: soap.c,v 1.100 2004/04/15 09:35:27 dmitry Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -1378,7 +1378,11 @@
                                            Z_OBJCE_P(EG(exception)) == 
soap_fault_class_entry) {
                                          soap_server_fault_ex(function, 
EG(exception), NULL TSRMLS_CC);
                                        } else {
-                                               zend_exception_error(EG(exception) 
TSRMLS_CC);
+                                               zval_dtor(&constructor);
+                                               zval_dtor(&c_ret);
+                                               zval_ptr_dtor(&tmp_soap);
+                                               php_end_ob_buffer(0, 0 TSRMLS_CC);
+                                               goto fail;
                                        }
                                }
                                zval_dtor(&constructor);
@@ -1407,7 +1411,12 @@
                                                    Z_OBJCE_P(EG(exception)) == 
soap_fault_class_entry) {
                                                        soap_server_fault_ex(function, 
EG(exception), NULL TSRMLS_CC);
                                                } else {
-                                                       
zend_exception_error(EG(exception) TSRMLS_CC);
+                                                       zval_dtor(&constructor);
+                                                       zval_dtor(&c_ret);
+                                                       efree(class_name);
+                                                       zval_ptr_dtor(&tmp_soap);
+                                                       php_end_ob_buffer(0, 0 
TSRMLS_CC);
+                                                       goto fail;
                                                }
                                        }
 #endif
@@ -1489,7 +1498,10 @@
                                                }
                                                soap_server_fault_ex(function, 
EG(exception), h TSRMLS_CC);
                                } else {
-                                       zend_exception_error(EG(exception) TSRMLS_CC);
+                                       efree(fn_name);
+                                       if (soap_obj) {zval_ptr_dtor(&soap_obj);}
+                                       php_end_ob_buffer(0, 0 TSRMLS_CC);
+                                       goto fail;
                                }
 #endif
                                }
@@ -1508,6 +1520,8 @@
                        if (service->soap_class.persistance != 
SOAP_PERSISTENCE_SESSION) {
                                zval_ptr_dtor(&soap_obj);
                        }
+#else
+                       zval_ptr_dtor(&soap_obj);
 #endif
                } else {
                        call_status = call_user_function(EG(function_table), NULL, 
&function_name, &retval, num_params, params TSRMLS_CC);
@@ -1523,7 +1537,9 @@
                    Z_OBJCE_P(EG(exception)) == soap_fault_class_entry) {
                        soap_server_fault_ex(function, EG(exception), NULL TSRMLS_CC);
                } else {
-                       zend_exception_error(EG(exception) TSRMLS_CC);
+                       if (soap_obj) {zval_ptr_dtor(&soap_obj);}
+                       php_end_ob_buffer(0, 0 TSRMLS_CC);
+                       goto fail;
                }
        }
 #endif
@@ -1550,25 +1566,6 @@
                php_error(E_ERROR, "Function '%s' call failed", 
Z_STRVAL(function_name));
        }
 
-       /* Free soap headers */
-       while (soap_headers != NULL) {
-               soapHeader *h = soap_headers;
-               int i;
-
-               soap_headers = soap_headers->next;
-               i = h->num_params;
-               while (i > 0) {
-                       zval_ptr_dtor(&h->parameters[--i]);
-               }
-               efree(h->parameters);
-               zval_dtor(&h->function_name);
-               zval_dtor(&h->retval);
-               efree(h);
-       }
-
-       SOAP_GLOBAL(soap_version) = old_soap_version;
-       SOAP_GLOBAL(sdl) = old_sdl;
-
        /* Flush buffer */
        php_end_ob_buffer(0, 0 TSRMLS_CC);
 
@@ -1587,6 +1584,31 @@
                sapi_add_header("Content-Type: text/xml; charset=\"utf-8\"", 
sizeof("Content-Type: text/xml; charset=\"utf-8\""), 1);
        }
 
+       xmlFreeDoc(doc_return);
+       php_write(buf, size TSRMLS_CC);
+       xmlFree(buf);
+
+fail:
+       SOAP_GLOBAL(soap_version) = old_soap_version;
+       SOAP_GLOBAL(sdl) = old_sdl;
+
+       /* Free soap headers */
+       zval_dtor(&retval);
+       while (soap_headers != NULL) {
+               soapHeader *h = soap_headers;
+               int i;
+
+               soap_headers = soap_headers->next;
+               i = h->num_params;
+               while (i > 0) {
+                       zval_ptr_dtor(&h->parameters[--i]);
+               }
+               efree(h->parameters);
+               zval_dtor(&h->function_name);
+               zval_dtor(&h->retval);
+               efree(h);
+       }
+
        /* Free Memory */
        if (num_params > 0) {
                for (i = 0; i < num_params;i++) {
@@ -1594,14 +1616,7 @@
                }
                efree(params);
        }
-
        zval_dtor(&function_name);
-       xmlFreeDoc(doc_return);
-
-       php_write(buf, size TSRMLS_CC);
-       xmlFree(buf);
-
-       zval_dtor(&retval);
 
        SOAP_SERVER_END_CODE();
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to