]> granicus.if.org Git - php/commitdiff
Fix memory leaks
authorJohn Coggeshall <john@php.net>
Wed, 6 Aug 2003 00:01:22 +0000 (00:01 +0000)
committerJohn Coggeshall <john@php.net>
Wed, 6 Aug 2003 00:01:22 +0000 (00:01 +0000)
ext/tidy/php_tidy.h
ext/tidy/tidy.c

index 42324e4a374353adae4444093e3aeeb425802f2b..9c2980bcf982e45fc0e6934550119dfd3a04c69b 100644 (file)
@@ -52,10 +52,7 @@ extern zend_module_entry tidy_module_entry;
 #define TIDY_RV_FALSE(__t) __t->type = IS_BOOL; __t->value.lval = FALSE
 #define TIDY_RV_TRUE(__t) __t->type = IS_BOOL; __t->value.lval = TRUE
 
-#define TIDY_IS_TN_PROP(_p) zend_hash_exists(TIDY_G(tn_prop), #_p, strlen(#_p))
-#define TIDY_IS_TA_PROP(_p) zend_hash_exists(TIDY_G(ta_prop), #_p, strlen(#_p))
-
-#define REMOVE_NEWLINE(_z) _z->value.str.val[_z->value.str.len-1] = '\0';
+#define REMOVE_NEWLINE(_z) _z->value.str.val[_z->value.str.len-1] = '\0'; _z->value.str.len--;
 
 #define TIDY_TAG_CONST(tag) REGISTER_LONG_CONSTANT("TIDY_TAG_" #tag, TidyTag_##tag, CONST_CS | CONST_PERSISTENT)
 #define TIDY_ATTR_CONST(attr) REGISTER_LONG_CONSTANT("TIDY_ATTR_" #attr, TidyAttr_##attr, CONST_CS | CONST_PERSISTENT)
@@ -82,7 +79,7 @@ struct _PHPTidyObj {
     TidyAttr            attr;
     PHPTidyDoc          *tdoc;
     unsigned int        type;
-    zval                *obj_parent;
+    PHPTidyObj          *parent;
     unsigned int        refcount;
 };
 
@@ -121,38 +118,38 @@ PHP_FUNCTION(tidy_get_html);
 PHP_FUNCTION(tidy_get_head);
 PHP_FUNCTION(tidy_get_body);
 
-static void php_tidy_obj_clone(void *, void ** TSRMLS_DC);
-static void php_tidy_obj_dtor(void *, zend_object_handle TSRMLS_DC);
+void php_tidy_obj_clone(void *, void ** TSRMLS_DC);
+void php_tidy_obj_dtor(void *, zend_object_handle TSRMLS_DC);
 
 zend_object_value php_tidy_create_obj(zend_class_entry * TSRMLS_DC);
-static zend_object_value php_tidy_register_object(PHPTidyObj *intern TSRMLS_DC);
-
-static zval *_php_tidy_create_obj_zval(unsigned int objtype,
-                                                                          PHPTidyObj *parent,
-                                                                          void *data
-                                                                          TSRMLS_DC);
-static void _php_tidy_create_obj(zval *return_value,
-                                                                 unsigned int objtype,
-                                                                 PHPTidyObj *parent,
-                                                             void *data
-                                                             TSRMLS_DC);
+zend_object_value php_tidy_register_object(PHPTidyObj *intern TSRMLS_DC);
+zval *_php_tidy_create_obj_zval(unsigned int objtype,
+                                        PHPTidyObj *parent,
+                                        void *data
+                                        TSRMLS_DC);
+
+void _php_tidy_create_obj(zval *return_value,
+                                unsigned int objtype,
+                                PHPTidyObj *parent,
+                                void *data
+                                TSRMLS_DC);
 /* object handlers */
-static zval * tidy_property_read(zval *object, zval *member, zend_bool silent TSRMLS_DC);
-static void tidy_property_write(zval *obj, zval *member, zval *value TSRMLS_DC);
-static zval ** tidy_property_get_ptr(zval *obj, zval *member TSRMLS_DC);
-static int tidy_property_exists(zval *object, zval *member, int check_empty TSRMLS_DC);
-static void tidy_property_delete(zval *obj, zval *member TSRMLS_DC);
-static HashTable * tidy_get_properties(zval *object TSRMLS_DC);
-static union _zend_function * tidy_get_method(zval *obj, char *method, int method_len TSRMLS_DC);
-static int tidy_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS);
-static union _zend_function * tidy_get_constructor(zval *obj TSRMLS_DC);
-static zend_class_entry * tidy_get_class_entry(zval *obj TSRMLS_DC);
-static int tidy_get_class_name(zval *obj, char **class_name, zend_uint *name_len, int parent TSRMLS_DC);
-static int tidy_objects_compare(zval *obj_one, zval *obj_two TSRMLS_DC);
-static void tidy_object_cast(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC);
-static void tidy_write_dim(zval *object, zval *offset, zval *value TSRMLS_DC);
-static void tidy_del_dim(zval *object, zval *offset TSRMLS_DC);
-static zval *tidy_read_dim(zval *object, zval *offset TSRMLS_DC);
+zval * tidy_property_read(zval *object, zval *member, zend_bool silent TSRMLS_DC);
+void tidy_property_write(zval *obj, zval *member, zval *value TSRMLS_DC);
+zval ** tidy_property_get_ptr(zval *obj, zval *member TSRMLS_DC);
+int tidy_property_exists(zval *object, zval *member, int check_empty TSRMLS_DC);
+void tidy_property_delete(zval *obj, zval *member TSRMLS_DC);
+HashTable * tidy_get_properties(zval *object TSRMLS_DC);
+union _zend_function * tidy_get_method(zval *obj, char *method, int method_len TSRMLS_DC);
+int tidy_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS);
+union _zend_function * tidy_get_constructor(zval *obj TSRMLS_DC);
+zend_class_entry * tidy_get_class_entry(zval *obj TSRMLS_DC);
+int tidy_get_class_name(zval *obj, char **class_name, zend_uint *name_len, int parent TSRMLS_DC);
+int tidy_objects_compare(zval *obj_one, zval *obj_two TSRMLS_DC);
+void tidy_object_cast(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC);
+void tidy_write_dim(zval *object, zval *offset, zval *value TSRMLS_DC);
+void tidy_del_dim(zval *object, zval *offset TSRMLS_DC);
+zval *tidy_read_dim(zval *object, zval *offset TSRMLS_DC);
 
 zend_bool _php_tidy_attr_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS);
 zend_bool _php_tidy_node_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS);
index b08a023d5f303dcb6e314fa099fcef176f0851b5..5320613b31d30526f325f8846b35f2101bc138a2 100644 (file)
@@ -66,14 +66,14 @@ static zend_object_handlers php_tidy_object_handlers = {
 
 function_entry tidy_functions[] = {
        PHP_FE(tidy_create,                     NULL)
-       PHP_FE(tidy_setopt,             NULL)
-       PHP_FE(tidy_getopt,             NULL)
-       PHP_FE(tidy_parse_string,       NULL)
-       PHP_FE(tidy_parse_file,         NULL)
-       PHP_FE(tidy_get_output,         NULL)
-       PHP_FE(tidy_get_error_buffer,   NULL)
-       PHP_FE(tidy_clean_repair,       NULL)
-       PHP_FE(tidy_diagnose,           NULL)
+       PHP_FE(tidy_setopt,                     NULL)
+       PHP_FE(tidy_getopt,                     NULL)
+       PHP_FE(tidy_parse_string,               NULL)
+       PHP_FE(tidy_parse_file,                 NULL)
+       PHP_FE(tidy_get_output,                 NULL)
+       PHP_FE(tidy_get_error_buffer,           NULL)
+       PHP_FE(tidy_clean_repair,               NULL)
+       PHP_FE(tidy_diagnose,                   NULL)
        PHP_FE(tidy_get_release,                NULL)
        PHP_FE(tidy_get_status,                 NULL)
        PHP_FE(tidy_get_html_ver,               NULL)
@@ -84,7 +84,7 @@ function_entry tidy_functions[] = {
        PHP_FE(tidy_access_count,               NULL)
        PHP_FE(tidy_config_count,               NULL)
        PHP_FE(tidy_load_config,                NULL)
-       PHP_FE(tidy_load_config_enc,    NULL)
+       PHP_FE(tidy_load_config_enc,            NULL)
        PHP_FE(tidy_set_encoding,               NULL)
        PHP_FE(tidy_save_config,                NULL)
        PHP_FE(tidy_get_root,                   NULL)
@@ -99,7 +99,7 @@ zend_module_entry tidy_module_entry = {
 #if ZEND_MODULE_API_NO >= 20010901
        STANDARD_MODULE_HEADER,
 #endif
-       "Tidy",
+       "tidy",
        tidy_functions,
        PHP_MINIT(tidy),
        PHP_MSHUTDOWN(tidy),
@@ -152,18 +152,19 @@ PHPTidyObj *php_tidy_new(TSRMLS_DC) {
        intern->attr = NULL;
        intern->type = PHP_IS_TIDYUNDEF;
        intern->tdoc = NULL;
+       intern->parent = NULL;
        
-       intern->obj.properties = emalloc(sizeof(HashTable));
+       ALLOC_HASHTABLE(intern->obj.properties);
        zend_hash_init(intern->obj.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
        
        return intern;  
        
 }
 
-static zval *_php_tidy_create_obj_zval(unsigned int objtype,
-                                                                          PHPTidyObj *parent,
-                                                                          void  *data
-                                                                          TSRMLS_DC) {
+zval *_php_tidy_create_obj_zval(unsigned int objtype,
+                                       PHPTidyObj *parent,
+                                       void  *data
+                                       TSRMLS_DC) {
        zval *return_value;
        MAKE_STD_ZVAL(return_value);
        ZVAL_NULL(return_value);
@@ -172,18 +173,25 @@ static zval *_php_tidy_create_obj_zval(unsigned int objtype,
        return return_value;
 }
 
-static void _php_tidy_create_obj(zval *return_value,
-                                                                 unsigned int objtype,
-                                                                 PHPTidyObj *parent,
-                                                             void *data
-                                                             TSRMLS_DC) {
+void _php_tidy_create_obj(zval *return_value,
+                               unsigned int objtype,
+                               PHPTidyObj *parent,
+                               void *data
+                               TSRMLS_DC) {
        
-       PHPTidyObj *retobj;
+       PHPTidyObj *retobj, *t;
        
        retobj = php_tidy_new();
        retobj->tdoc = parent->tdoc;
        retobj->type = objtype;
        retobj->refcount = 1;
+       retobj->parent = parent;
+       
+       t = retobj;
+       while((t = t->parent)) {
+               t->refcount++;
+       }
+       
        parent->refcount++;
        
        switch(objtype) {
@@ -204,13 +212,13 @@ static void _php_tidy_create_obj(zval *return_value,
 
 }
 
-static zend_object_value php_tidy_register_object(PHPTidyObj *intern TSRMLS_DC) {
+zend_object_value php_tidy_register_object(PHPTidyObj *intern TSRMLS_DC) {
        
        zend_object_value retval;
        
        retval.handle = zend_objects_store_put(intern,
-                                                                                  php_tidy_obj_dtor,
-                                                                                  php_tidy_obj_clone TSRMLS_CC);
+                                               php_tidy_obj_dtor,
+                                               php_tidy_obj_clone TSRMLS_CC);
        retval.handlers = (zend_object_handlers *) &php_tidy_object_handlers;
 
        return retval;
@@ -218,39 +226,55 @@ static zend_object_value php_tidy_register_object(PHPTidyObj *intern TSRMLS_DC)
  
 void dtor_TidyDoc(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
     
-    PHPTidyDoc *tdoc = (PHPTidyDoc *)rsrc->ptr;
-        
-    if(tdoc->doc) {
-               tidyRelease(tdoc->doc);
-    }
-    if(tdoc->errbuf) {
-               tidyBufFree(tdoc->errbuf);
-               efree(tdoc->errbuf);
-
-    }
-    
+       PHPTidyDoc *tdoc = (PHPTidyDoc *)rsrc->ptr;
+           
+       if(tdoc->doc) {
+                   tidyRelease(tdoc->doc);
+       }
+       if(tdoc->errbuf) {
+                   tidyBufFree(tdoc->errbuf);
+                   efree(tdoc->errbuf);
+       
+       }
+       
        efree(tdoc);
     
 }
 
-static void php_tidy_obj_dtor(void *object, zend_object_handle handle TSRMLS_DC) {
+ void php_tidy_obj_dtor(void *object, zend_object_handle handle TSRMLS_DC) {
                
        PHPTidyObj *o = (PHPTidyObj *)object;
        
-       if(--o->refcount == 0) {
+       do {
+               o->refcount--;
+       } while((o = o->parent));
+       
+       o = (PHPTidyObj *)object;
+       
+       if(o->refcount <= 0) {
                /* We don't free anything else here from
                   PHPTidyObj, they are all pointers
                   to internal TidyNode structs, which
                   get freed when the tidy resource is
                   destroied by TidyRelease()
                */
-       
+               
+//             zend_hash_destroy(o->obj.properties);
+//             FREE_HASHTABLE(o->obj.properties);
+               
                zend_objects_destroy_object(&o->obj, handle TSRMLS_CC);
+               
+               o->node = NULL;
+               o->attr = NULL;
+               o->tdoc = NULL;
+               o->type = PHP_IS_TIDYUNDEF;
+               o->parent = NULL;
+               efree(o);
        }
        
 }
 
-static void php_tidy_obj_clone(void *object, void **object_clone TSRMLS_DC) {
+ void php_tidy_obj_clone(void *object, void **object_clone TSRMLS_DC) {
        
        PHPTidyObj *intern = (PHPTidyObj *) object;
        PHPTidyObj **intern_clone = (PHPTidyObj **) object_clone;
@@ -269,23 +293,23 @@ static void php_tidy_obj_clone(void *object, void **object_clone TSRMLS_DC) {
        
 }
 
-static void php_tidy_init_globals(zend_tidy_globals *tidy_globals) {
+ void php_tidy_init_globals(zend_tidy_globals *tidy_globals) {
        
        /* No globals for now */
 }
 
 PHP_MINIT_FUNCTION(tidy) {
 
-    zend_class_entry _tidy_entry;
+       zend_class_entry _tidy_entry;
     
-    INIT_CLASS_ENTRY(_tidy_entry, "TidyObject", NULL);
-    php_tidy_ce = zend_register_internal_class(&_tidy_entry TSRMLS_CC);
+       INIT_CLASS_ENTRY(_tidy_entry, "TidyObject", NULL);
+       php_tidy_ce = zend_register_internal_class(&_tidy_entry TSRMLS_CC);
     
-    ZEND_INIT_MODULE_GLOBALS(tidy, php_tidy_init_globals, NULL);
-    le_tidydoc = zend_register_list_destructors_ex(dtor_TidyDoc, NULL, le_tidydoc_name, module_number);
+       ZEND_INIT_MODULE_GLOBALS(tidy, php_tidy_init_globals, NULL);
+       le_tidydoc = zend_register_list_destructors_ex(dtor_TidyDoc, NULL, le_tidydoc_name, module_number);
     
-    _php_tidy_register_tags(INIT_FUNC_ARGS_PASSTHRU);
-    _php_tidy_register_attributes(INIT_FUNC_ARGS_PASSTHRU);
+       _php_tidy_register_tags(INIT_FUNC_ARGS_PASSTHRU);
+       _php_tidy_register_attributes(INIT_FUNC_ARGS_PASSTHRU);
        _php_tidy_register_nodetypes(INIT_FUNC_ARGS_PASSTHRU);
        
        tidySetMallocCall(_php_tidy_mem_alloc);
@@ -293,7 +317,7 @@ PHP_MINIT_FUNCTION(tidy) {
        tidySetFreeCall(_php_tidy_mem_free);
        tidySetPanicCall(_php_tidy_mem_panic);
        
-    return SUCCESS;
+       return SUCCESS;
 
 }
 
@@ -320,21 +344,21 @@ PHP_MINFO_FUNCTION(tidy) {
    Initialize a new tidy document */
 PHP_FUNCTION(tidy_create) {
     
-    PHPTidyDoc *tdoc;
-    tdoc = emalloc(sizeof(PHPTidyDoc));
-    tdoc->doc = tidyCreate();
-    tdoc->parsed = 0;
-    
-    tdoc->errbuf = emalloc(sizeof(TidyBuffer));
-    tidyBufInit(tdoc->errbuf);
-    
-   if(tidySetErrorBuffer(tdoc->doc, tdoc->errbuf) != 0) 
-        php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not set Tidy error buffer");
-   
-    tidyOptSetBool(tdoc->doc, TidyForceOutput, yes);
-       tidyOptSetBool(tdoc->doc, TidyMark, no);
-               
-    ZEND_REGISTER_RESOURCE(return_value, tdoc, le_tidydoc);
+       PHPTidyDoc *tdoc;
+       tdoc = emalloc(sizeof(PHPTidyDoc));
+       tdoc->doc = tidyCreate();
+       tdoc->parsed = 0;
+       
+       tdoc->errbuf = emalloc(sizeof(TidyBuffer));
+       tidyBufInit(tdoc->errbuf);
+       
+       if(tidySetErrorBuffer(tdoc->doc, tdoc->errbuf) != 0) 
+           php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not set Tidy error buffer");
+       
+       tidyOptSetBool(tdoc->doc, TidyForceOutput, yes);
+           tidyOptSetBool(tdoc->doc, TidyMark, no);
+                   
+       ZEND_REGISTER_RESOURCE(return_value, tdoc, le_tidydoc);
     
 }
 /* }}} */
@@ -343,27 +367,27 @@ PHP_FUNCTION(tidy_create) {
    Parse a document stored in a string */
 PHP_FUNCTION(tidy_parse_string) {
     
-    char *input;
-    int input_len;
-    zval *res;
-    PHPTidyDoc *tdoc;
-
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rs", &res, &input, &input_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    
-    if(tidyParseString(tdoc->doc, input) < 0) {
-        php_error_docref(NULL TSRMLS_CC, E_ERROR, "[Tidy error] %s", tdoc->errbuf->bp);
-    }
-    
-    tdoc->parsed = 1;
+       char *input;
+       int input_len;
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rs", &res, &input, &input_len) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(tidyParseString(tdoc->doc, input) < 0) {
+           php_error_docref(NULL TSRMLS_CC, E_ERROR, "[Tidy error] %s", tdoc->errbuf->bp);
+       }
+       
+       tdoc->parsed = 1;
     
 }
 /* }}} */
@@ -372,33 +396,33 @@ PHP_FUNCTION(tidy_parse_string) {
    Return warnings and errors which occured parsing the specified document*/
 PHP_FUNCTION(tidy_get_error_buffer) {
 
-    zval *res;
-    PHPTidyDoc *tdoc;
-    zend_bool detailed;
-    
-    if((ZEND_NUM_ARGS() == 0) || (ZEND_NUM_ARGS() > 2)) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r|b", &res, &detailed) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-    
-    if(detailed) {
-       tidyErrorSummary(tdoc->doc);
-    }
-
-    RETVAL_STRING(tdoc->errbuf->bp, 1);
-    
-    tidyBufClear(tdoc->errbuf); 
+       zval *res;
+       PHPTidyDoc *tdoc;
+       zend_bool detailed;
+       
+       if((ZEND_NUM_ARGS() == 0) || (ZEND_NUM_ARGS() > 2)) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r|b", &res, &detailed) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       if(detailed) {
+           tidyErrorSummary(tdoc->doc);
+       }
+       
+       RETVAL_STRING(tdoc->errbuf->bp, 1);
+       
+       tidyBufClear(tdoc->errbuf); 
     
 }
 /* }}} */
@@ -407,31 +431,31 @@ PHP_FUNCTION(tidy_get_error_buffer) {
    Return a string representing the parsed tidy markup */
 PHP_FUNCTION(tidy_get_output) {
     
-    zval *res;
-    PHPTidyDoc *tdoc;
-    TidyBuffer output = {0};
-    
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-    tidySaveBuffer( tdoc->doc, &output );
-    
-    RETVAL_STRING(output.bp, 1);
-    
-    tidyBufFree(&output);
+       zval *res;
+       PHPTidyDoc *tdoc;
+       TidyBuffer output = {0};
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       tidySaveBuffer( tdoc->doc, &output );
+       
+       RETVAL_STRING(output.bp, 1);
+       
+       tidyBufFree(&output);
     
 }
 /* }}} */
@@ -441,44 +465,44 @@ PHP_FUNCTION(tidy_get_output) {
 PHP_FUNCTION(tidy_parse_file) {
        
     
-    char *inputfile;
-    int input_len;
-    zval *res;
-    PHPTidyDoc *tdoc;
-    php_stream *stream;
-    char *contents;
-    
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rs", &res, &inputfile, &input_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    
-    stream = php_stream_open_wrapper(inputfile, "rb",
-                                                                        ENFORCE_SAFE_MODE | REPORT_ERRORS,
-                                                                        NULL);
-    
-    if(!stream) {
-               RETURN_FALSE;
-    }
-    
-       if (php_stream_copy_to_mem(stream, &contents, PHP_STREAM_COPY_ALL, 0) > 0) {
-               
-               if(tidyParseString(tdoc->doc, contents) < 0) {
-                       php_error_docref(NULL TSRMLS_CC, E_ERROR, "[Tidy error] %s", tdoc->errbuf->bp);
-               }
-               tdoc->parsed = TRUE;
-               efree(contents);
+       char *inputfile;
+       int input_len;
+       zval *res;
+       PHPTidyDoc *tdoc;
+       php_stream *stream;
+       char *contents;
+       
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
        }
-
-       php_stream_close(stream);
-    
-    RETURN_TRUE;
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rs", &res, &inputfile, &input_len) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       stream = php_stream_open_wrapper(inputfile, "rb",
+                                                                            ENFORCE_SAFE_MODE | REPORT_ERRORS,
+                                                                            NULL);
+       
+       if(!stream) {
+                   RETURN_FALSE;
+       }
+       
+           if (php_stream_copy_to_mem(stream, &contents, PHP_STREAM_COPY_ALL, 0) > 0) {
+                   
+                   if(tidyParseString(tdoc->doc, contents) < 0) {
+                           php_error_docref(NULL TSRMLS_CC, E_ERROR, "[Tidy error] %s", tdoc->errbuf->bp);
+                   }
+                   tdoc->parsed = TRUE;
+                   efree(contents);
+           }
+       
+           php_stream_close(stream);
+       
+       RETURN_TRUE;
 }
 /* }}} */
 
@@ -486,28 +510,28 @@ PHP_FUNCTION(tidy_parse_file) {
    Execute configured cleanup and repair operations on parsed markup */
 PHP_FUNCTION(tidy_clean_repair) {
     
-    zval *res;
-    PHPTidyDoc *tdoc;
-    
-    if(ZEND_NUM_ARGS() != 1) {
-       WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-    
-    if(tidyCleanAndRepair(tdoc->doc) >= 0) RETURN_TRUE;
-    
-    RETURN_FALSE;
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+          WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       if(tidyCleanAndRepair(tdoc->doc) >= 0) RETURN_TRUE;
+       
+       RETURN_FALSE;
         
 }
 /* }}} */
@@ -516,28 +540,28 @@ PHP_FUNCTION(tidy_clean_repair) {
     Run configured diagnostics on parsed and repaired markup. */
 PHP_FUNCTION(tidy_diagnose) {
     
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-    
-    if(tidyRunDiagnostics(tdoc->doc) >= 0) RETURN_TRUE;
-    
-    RETURN_FALSE;    
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       if(tidyRunDiagnostics(tdoc->doc) >= 0) RETURN_TRUE;
+       
+       RETURN_FALSE;    
 }
 
 /* }}} */
@@ -546,28 +570,28 @@ PHP_FUNCTION(tidy_diagnose) {
     Get release date (version) for Tidy library */
 PHP_FUNCTION(tidy_get_release) {
 
-    RETURN_STRING((char *)tidyReleaseDate(), 1);    
+       RETURN_STRING((char *)tidyReleaseDate(), 1);    
 }
 /* }}} */
 
 /* {{{ proto int tidy_get_status(resource tidy)
     Get status of specfied document. */
 PHP_FUNCTION(tidy_get_status) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    RETURN_LONG(tidyStatus(tdoc->doc));
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       RETURN_LONG(tidyStatus(tdoc->doc));
     
 }
 /* }}} */
@@ -575,53 +599,53 @@ PHP_FUNCTION(tidy_get_status) {
 /* {{{ proto int tidy_get_html_ver(resource tidy)
     Get the Detected HTML version for the specified document. */
 PHP_FUNCTION(tidy_get_html_ver) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-
-    RETURN_LONG(tidyDetectedHtmlVersion(tdoc->doc));
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       
+       RETURN_LONG(tidyDetectedHtmlVersion(tdoc->doc));
 }
 /* }}} */
 
 /* {{{ proto boolean tidy_is_xhtml(resource tidy)
     Indicates if the document is a XHTML document. */
 PHP_FUNCTION(tidy_is_xhtml) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-    RETURN_BOOL(tidyDetectedXhtml(tdoc->doc)); 
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       RETURN_BOOL(tidyDetectedXhtml(tdoc->doc));      
        
 }
 /* }}} */
@@ -629,104 +653,104 @@ PHP_FUNCTION(tidy_is_xhtml) {
 /* {{{ proto boolean tidy_is_xhtml(resource tidy)
     Indicates if the document is a generic (non HTML/XHTML) XML document. */
 PHP_FUNCTION(tidy_is_xml) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-    RETURN_BOOL(tidyDetectedGenericXml(tdoc->doc));    
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       RETURN_BOOL(tidyDetectedGenericXml(tdoc->doc)); 
 }
 /* }}} */
 
 /* {{{ proto int tidy_error_count(resource tidy)
     Returns the Number of Tidy errors encountered for specified document. */
 PHP_FUNCTION(tidy_error_count) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-    RETURN_LONG(tidyErrorCount(tdoc->doc));    
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       RETURN_LONG(tidyErrorCount(tdoc->doc)); 
 }
 /* }}} */
 
 /* {{{ proto int tidy_warning_count(resource tidy)
     Returns the Number of Tidy warnings encountered for specified document. */
 PHP_FUNCTION(tidy_warning_count) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-    RETURN_LONG(tidyWarningCount(tdoc->doc));  
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       RETURN_LONG(tidyWarningCount(tdoc->doc));       
 }
 /* }}} */
 
 /* {{{ proto int tidy_access_count(resource tidy)
     Returns the Number of Tidy accessibility warnings encountered for specified document. */
 PHP_FUNCTION(tidy_access_count) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-    RETURN_LONG(tidyAccessWarningCount(tdoc->doc));    
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       RETURN_LONG(tidyAccessWarningCount(tdoc->doc)); 
                
 }
 /* }}} */
@@ -734,47 +758,47 @@ PHP_FUNCTION(tidy_access_count) {
 /* {{{ proto int tidy_config_count(resource tidy)
     Returns the Number of Tidy configuration errors encountered for specified document. */
 PHP_FUNCTION(tidy_config_count) {
-    zval *res;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-
-    RETURN_LONG(tidyConfigErrorCount(tdoc->doc));      
+       zval *res;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       
+       RETURN_LONG(tidyConfigErrorCount(tdoc->doc));   
        
 }
 /* }}} */
 
-/* {{{ proto void tidy_load_config(resource tidy, string filename)
-    Load an ASCII Tidy configuration file */
-PHP_FUNCTION(tidy_load_config) {
-    zval *res;
-    char *filename;
-    int filename_len;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rs", &res, &filename, &filename_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    if(tidyLoadConfig(tdoc->doc, filename) < 0) {
-        php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not load configuration file '%s'", filename);
-    }
+/* {{{ proto void tidy_load_config(resource tidy, string filename)
+    Load an ASCII Tidy configuration file */
+PHP_FUNCTION(tidy_load_config) {
+       zval *res;
+       char *filename;
+       int filename_len;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rs", &res, &filename, &filename_len) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       if(tidyLoadConfig(tdoc->doc, filename) < 0) {
+            php_error_docref(NULL TSRMLS_CC, E_ERROR, "Could not load configuration file '%s'", filename);
+       }
     
 }
 /* }}} */
@@ -782,28 +806,28 @@ PHP_FUNCTION(tidy_load_config) {
 /* {{{ proto void tidy_load_config(resource tidy, string filename, string encoding)
     Load an ASCII Tidy configuration file with the specified encoding */
 PHP_FUNCTION(tidy_load_config_enc) {
-    zval *res;
-    char *filename;
-    char *encoding;
-    int enc_len, file_len;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rss", &res, &filename, &file_len, &encoding, &enc_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    if(tidyLoadConfigEnc(tdoc->doc, filename, encoding) < 0) {
-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not load configuration file '%s' using encoding '%s'", filename, encoding);
-        RETURN_FALSE;
-    }
-    
-    RETURN_TRUE;
+       zval *res;
+       char *filename;
+       char *encoding;
+       int enc_len, file_len;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rss", &res, &filename, &file_len, &encoding, &enc_len) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       if(tidyLoadConfigEnc(tdoc->doc, filename, encoding) < 0) {
+            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not load configuration file '%s' using encoding '%s'", filename, encoding);
+            RETURN_FALSE;
+       }
+       
+       RETURN_TRUE;
 }
 /* }}} */
 
@@ -812,54 +836,54 @@ PHP_FUNCTION(tidy_load_config_enc) {
     Values include: ascii, latin1, raw, utf8, iso2022, mac, win1252, utf16le,
     utf16be, utf16, big5 and shiftjis. */
 PHP_FUNCTION(tidy_set_encoding) {
-    zval *res;
-    char *encoding;
-    int enc_len;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rs", &res, &encoding, &enc_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    if(tidySetCharEncoding(tdoc->doc, encoding) < 0) {
-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not set encoding '%s'", encoding);
-        RETURN_FALSE;
-    }
-    
-    RETURN_TRUE;
+       zval *res;
+       char *encoding;
+       int enc_len;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rs", &res, &encoding, &enc_len) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       if(tidySetCharEncoding(tdoc->doc, encoding) < 0) {
+            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not set encoding '%s'", encoding);
+            RETURN_FALSE;
+       }
+       
+       RETURN_TRUE;
 }
 /* }}} */
 
 /* {{{ proto boolean tidy_save_config(resource tidy, string filename)
     Save current settings to named file. Only non-default values are written. */
 PHP_FUNCTION(tidy_save_config) {
-    zval *res;
-    char *filename;
-    int file_len;
-    PHPTidyDoc *tdoc;
-  
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rs", &res, &filename, &file_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-    if(tidyOptSaveFile(tdoc->doc, filename) < 0) {
-        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not write tidy configuration file '%s'", filename);
-        RETURN_FALSE;
-    }
-    
-    RETURN_TRUE;
+       zval *res;
+       char *filename;
+       int file_len;
+       PHPTidyDoc *tdoc;
+       
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
+       }
+       
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rs", &res, &filename, &file_len) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       if(tidyOptSaveFile(tdoc->doc, filename) < 0) {
+            php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not write tidy configuration file '%s'", filename);
+            RETURN_FALSE;
+       }
+       
+       RETURN_TRUE;
 }
 /* }}} */
 
@@ -868,36 +892,36 @@ PHP_FUNCTION(tidy_save_config) {
 PHP_FUNCTION(tidy_setopt) {
        
        zval *res, *value;
-    char *optname;
-    int optname_len;
-    PHPTidyDoc *tdoc;
-    TidyOption opt;
-    
-  
-    if(ZEND_NUM_ARGS() != 3) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rsz", &res, &optname, &optname_len, &value) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->doc) {
-               php_error_docref(NULL TSRMLS_CC,E_ERROR, "Invalid Tidy Resource Specified");
-               RETURN_FALSE;
-    }
-    
-    opt = tidyGetOptionByName(tdoc->doc, optname);
-       if(!opt) {
-               php_error_docref(NULL TSRMLS_CC,E_WARNING, "Unknown Tidy Configuration Option '%s'", optname);
-               RETURN_FALSE;
+       char *optname;
+       int optname_len;
+       PHPTidyDoc *tdoc;
+       TidyOption opt;
+       
+       
+       if(ZEND_NUM_ARGS() != 3) {
+           WRONG_PARAM_COUNT;
        }
        
-    switch(tidyOptGetType(opt)) {
-               
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rsz", &res, &optname, &optname_len, &value) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->doc) {
+                   php_error_docref(NULL TSRMLS_CC,E_ERROR, "Invalid Tidy Resource Specified");
+                   RETURN_FALSE;
+       }
+       
+       opt = tidyGetOptionByName(tdoc->doc, optname);
+           if(!opt) {
+                   php_error_docref(NULL TSRMLS_CC,E_WARNING, "Unknown Tidy Configuration Option '%s'", optname);
+                   RETURN_FALSE;
+           }
+           
+       switch(tidyOptGetType(opt)) {
+                   
                case TidyString:
                        if(tidyOptSetValue(tdoc->doc, tidyOptGetId(opt), Z_STRVAL_P(value))) {
                                RETURN_TRUE;
@@ -919,9 +943,9 @@ PHP_FUNCTION(tidy_setopt) {
                default:
                        
                        php_error_docref(NULL TSRMLS_CC,E_WARNING, "Unable to determine type of Tidy configuration constant to set");
-                       
-    }
-    RETURN_FALSE;
+                           
+       }
+       RETURN_FALSE;
 }
 /* }}} */
 
@@ -930,63 +954,63 @@ PHP_FUNCTION(tidy_setopt) {
 PHP_FUNCTION(tidy_getopt) {
        
        zval *res;
-    char *optname, *strval;
-    int optname_len;
-    PHPTidyDoc *tdoc;
-       TidyOption opt;
+       char *optname, *strval;
+       int optname_len;
+       PHPTidyDoc *tdoc;
+           TidyOption opt;
+           
+       if(ZEND_NUM_ARGS() != 2) {
+           WRONG_PARAM_COUNT;
+       }
        
-    if(ZEND_NUM_ARGS() != 2) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "rs", &res, &optname, &optname_len) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-   
-    if(!tdoc->doc) {
-               php_error_docref(NULL TSRMLS_CC,E_ERROR, "Invalid Tidy Resource Specified");
-               RETURN_FALSE;
-    }
-    
-    opt = tidyGetOptionByName(tdoc->doc, optname);
-       if(!opt) {
-               php_error_docref(NULL TSRMLS_CC,E_WARNING, "Unknown Tidy Configuration Option '%s'", optname);
-               RETURN_FALSE;
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "rs", &res, &optname, &optname_len) == FAILURE) {
+           return;
        }
        
-    switch(tidyOptGetType(opt)) {
-               
-               case TidyString:
-                       strval = (char *)tidyOptGetValue(tdoc->doc, tidyOptGetId(opt));
-                       
-                       if(strval) {
-                               RETURN_STRING(strval, 0);
-                       } else {
-                               RETURN_EMPTY_STRING();
-                       }
-                       
-                       break;
-               case TidyInteger:
-                       RETURN_LONG(tidyOptGetInt(tdoc->doc, tidyOptGetId(opt)))
-                       break;
-               case TidyBoolean:       
-                                               
-                       if(tidyOptGetBool(tdoc->doc, tidyOptGetId(opt))) {
-                               RETURN_TRUE;
-                       }
-                       
-                       break;
-                       
-               default:
-                       
-                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to determine type of Tidy configuration constant to get");
-                       
-    }
-    
-    RETURN_FALSE;
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->doc) {
+                   php_error_docref(NULL TSRMLS_CC,E_ERROR, "Invalid Tidy Resource Specified");
+                   RETURN_FALSE;
+       }
+       
+       opt = tidyGetOptionByName(tdoc->doc, optname);
+           if(!opt) {
+                   php_error_docref(NULL TSRMLS_CC,E_WARNING, "Unknown Tidy Configuration Option '%s'", optname);
+                   RETURN_FALSE;
+           }
+           
+       switch(tidyOptGetType(opt)) {
+                   
+                   case TidyString:
+                           strval = (char *)tidyOptGetValue(tdoc->doc, tidyOptGetId(opt));
+                           
+                           if(strval) {
+                                   RETURN_STRING(strval, 0);
+                           } else {
+                                   RETURN_EMPTY_STRING();
+                           }
+                           
+                           break;
+                   case TidyInteger:
+                           RETURN_LONG(tidyOptGetInt(tdoc->doc, tidyOptGetId(opt)))
+                           break;
+                   case TidyBoolean:   
+                                                   
+                           if(tidyOptGetBool(tdoc->doc, tidyOptGetId(opt))) {
+                                   RETURN_TRUE;
+                           }
+                           
+                           break;
+                           
+                   default:
+                           
+                           php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to determine type of Tidy configuration constant to get");
+                           
+       }
+       
+       RETURN_FALSE;
        
 }
 /* }}} */
@@ -995,33 +1019,33 @@ PHP_FUNCTION(tidy_getopt) {
     Returns a TidyNode Object representing the root of the tidy parse tree */
 PHP_FUNCTION(tidy_get_root) {
     
-    zval *res;
-    PHPTidyDoc *tdoc;
-       PHPTidyObj *obj;
+       zval *res;
+       PHPTidyDoc *tdoc;
+           PHPTidyObj *obj;
+           
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
        
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-    
-    obj = php_tidy_new();
-    obj->node = tidyGetRoot(tdoc->doc);
-    obj->tdoc = tdoc;
-    obj->attr = NULL;
-    obj->type = PHP_IS_TIDYNODE;
-    
-    return_value->type = IS_OBJECT;
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       obj = php_tidy_new();
+       obj->node = tidyGetRoot(tdoc->doc);
+       obj->tdoc = tdoc;
+       obj->attr = NULL;
+       obj->type = PHP_IS_TIDYNODE;
+       
+       return_value->type = IS_OBJECT;
        return_value->value.obj = php_tidy_register_object(obj TSRMLS_CC);      
        
 }
@@ -1031,33 +1055,33 @@ PHP_FUNCTION(tidy_get_root) {
     Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree */
 PHP_FUNCTION(tidy_get_html) {
     
-    zval *res;
-    PHPTidyDoc *tdoc;
-       PHPTidyObj *obj;
+       zval *res;
+       PHPTidyDoc *tdoc;
+           PHPTidyObj *obj;
+           
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
        
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-
-    obj = php_tidy_new();
-    obj->node = tidyGetHtml(tdoc->doc);
-    obj->tdoc = tdoc;
-    obj->attr = NULL;
-    obj->type = PHP_IS_TIDYNODE;
-    
-    return_value->type = IS_OBJECT;
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       obj = php_tidy_new();
+       obj->node = tidyGetHtml(tdoc->doc);
+       obj->tdoc = tdoc;
+       obj->attr = NULL;
+       obj->type = PHP_IS_TIDYNODE;
+       
+       return_value->type = IS_OBJECT;
        return_value->value.obj = php_tidy_register_object(obj TSRMLS_CC);
        
 }
@@ -1067,33 +1091,33 @@ PHP_FUNCTION(tidy_get_html) {
     Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree */
 PHP_FUNCTION(tidy_get_head) {
     
-    zval *res;
-    PHPTidyDoc *tdoc;
-       PHPTidyObj *obj;
+       zval *res;
+       PHPTidyDoc *tdoc;
+           PHPTidyObj *obj;
+           
+       if(ZEND_NUM_ARGS() != 1) {
+           WRONG_PARAM_COUNT;
+       }
        
-    if(ZEND_NUM_ARGS() != 1) {
-        WRONG_PARAM_COUNT;
-    }
-    
-    if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                             "r", &res) == FAILURE) {
-        return;
-    }
-    
-    ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
-
-    if(!tdoc->parsed) {
-               php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
-               RETURN_FALSE;
-    }
-    
-    obj = php_tidy_new();
-    obj->node = tidyGetHead(tdoc->doc);
-    obj->tdoc = tdoc;
-    obj->attr = NULL;
-    obj->type = PHP_IS_TIDYNODE;
-    
-    return_value->type = IS_OBJECT;
+       if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
+                                "r", &res) == FAILURE) {
+           return;
+       }
+       
+       ZEND_FETCH_RESOURCE(tdoc, PHPTidyDoc *, &res, -1, le_tidydoc_name, le_tidydoc);
+       
+       if(!tdoc->parsed) {
+                   php_error_docref(NULL TSRMLS_CC, E_WARNING, "A document must be parsed before executing this function.");
+                   RETURN_FALSE;
+       }
+       
+       obj = php_tidy_new();
+       obj->node = tidyGetHead(tdoc->doc);
+       obj->tdoc = tdoc;
+       obj->attr = NULL;
+       obj->type = PHP_IS_TIDYNODE;
+       
+       return_value->type = IS_OBJECT;
        return_value->value.obj = php_tidy_register_object(obj TSRMLS_CC);      
        
 }
@@ -1135,29 +1159,29 @@ PHP_FUNCTION(tidy_get_body) {
 }
 /* }}} */
 
-static void tidy_property_delete(zval *obj, zval *member TSRMLS_DC) {}
-static void tidy_property_write(zval *obj, zval *member, zval *value TSRMLS_DC) {}
-static void tidy_object_cast(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC) {}
-static union _zend_function * tidy_get_constructor(zval *obj TSRMLS_DC) { return NULL; }
-static void tidy_write_dim(zval *object, zval *offset, zval *value TSRMLS_DC) {}
-static void tidy_del_dim(zval *object, zval *offset TSRMLS_DC) {}
-static zval *tidy_read_dim(zval *object, zval *offset TSRMLS_DC) {
+ void tidy_property_delete(zval *obj, zval *member TSRMLS_DC) {}
+ void tidy_property_write(zval *obj, zval *member, zval *value TSRMLS_DC) {}
+ void tidy_object_cast(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC) {}
+ union _zend_function * tidy_get_constructor(zval *obj TSRMLS_DC) { return NULL; }
+ void tidy_write_dim(zval *object, zval *offset, zval *value TSRMLS_DC) {}
+ void tidy_del_dim(zval *object, zval *offset TSRMLS_DC) {}
+ zval *tidy_read_dim(zval *object, zval *offset TSRMLS_DC) {
        
        return EG(uninitialized_zval_ptr);
 }
 
-static zend_class_entry * tidy_get_class_entry(zval *obj TSRMLS_DC) {
+ zend_class_entry * tidy_get_class_entry(zval *obj TSRMLS_DC) {
        
        return php_tidy_ce;
 }
 
 
-static zval ** tidy_property_get_ptr(zval *obj, zval *member TSRMLS_DC) {
+ zval ** tidy_property_get_ptr(zval *obj, zval *member TSRMLS_DC) {
        zval **p_ptr;
        zval  *p;
 
        /* How to fix this memleak? */
-       p_ptr = emalloc(sizeof(zval **));
+       //p_ptr = emalloc(sizeof(zval **));
 
        p = tidy_property_read(obj, member, 0 TSRMLS_CC);
 
@@ -1167,7 +1191,7 @@ static zval ** tidy_property_get_ptr(zval *obj, zval *member TSRMLS_DC) {
        
 }
 
-static zval * tidy_property_read(zval *object, zval *member, zend_bool silent TSRMLS_DC) {
+ zval * tidy_property_read(zval *object, zval *member, zend_bool silent TSRMLS_DC) {
        
        PHPTidyObj *obj = php_tidy_fetch_object(object);
        zval *return_value, *temp;
@@ -1228,14 +1252,11 @@ static zval * tidy_property_read(zval *object, zval *member, zend_bool silent TS
                                if(tempattr) {
                                        
                                        temp = _php_tidy_create_obj_zval(PHP_IS_TIDYATTR, obj, tempattr TSRMLS_CC);
-                                       temp->refcount--;
                                        add_next_index_zval(return_value, temp);
-                                       
                                        while((tempattr = tidyAttrNext(tempattr))) {
                                                
                                                temp = _php_tidy_create_obj_zval(PHP_IS_TIDYATTR, obj, tempattr TSRMLS_CC);
                                                add_next_index_zval(return_value, temp);
-                                               
                                        }
                                }
                                
@@ -1247,13 +1268,10 @@ static zval * tidy_property_read(zval *object, zval *member, zend_bool silent TS
                                        
                                        temp = _php_tidy_create_obj_zval(PHP_IS_TIDYNODE, obj, tempnode TSRMLS_CC);
                                        add_next_index_zval(return_value, temp);
-                                       
                                        while((tempnode = tidyGetNext(tempnode))) {
                                                
-                                               temp = _php_tidy_create_obj_zval(PHP_IS_TIDYNODE, obj, tempnode TSRMLS_CC);
-                                               temp->refcount--;
+                                               temp = _php_tidy_create_obj_zval(PHP_IS_TIDYNODE, obj, tempnode TSRMLS_CC);                                     
                                                add_next_index_zval(return_value, temp);
-                                                       
                                        }
                                }
                                
@@ -1266,6 +1284,7 @@ static zval * tidy_property_read(zval *object, zval *member, zend_bool silent TS
                        }
                        
                        break;
+                       
                case PHP_IS_TIDYATTR:
                        
                        if(!strcmp(name, "name")) {
@@ -1293,12 +1312,12 @@ static zval * tidy_property_read(zval *object, zval *member, zend_bool silent TS
                        
 }
 
-static int tidy_property_exists(zval *object, zval *member, int check_empty TSRMLS_DC) {
+ int tidy_property_exists(zval *object, zval *member, int check_empty TSRMLS_DC) {
                
        return TRUE;
 }
 
-static HashTable * tidy_get_properties(zval *object TSRMLS_DC) {
+ HashTable * tidy_get_properties(zval *object TSRMLS_DC) {
                
        zend_object *zobj;
        zobj = zend_objects_get_address(object TSRMLS_CC);
@@ -1306,7 +1325,7 @@ static HashTable * tidy_get_properties(zval *object TSRMLS_DC) {
        
 }
 
-static union _zend_function * tidy_get_method(zval *obj, char *method, int method_len TSRMLS_DC) {
+ union _zend_function * tidy_get_method(zval *obj, char *method, int method_len TSRMLS_DC) {
        
        zend_internal_function *f;
 
@@ -1315,8 +1334,6 @@ static union _zend_function * tidy_get_method(zval *obj, char *method, int metho
        f->arg_types = NULL;
        f->scope = php_tidy_ce;
        f->fn_flags = 0;
-
-       /* How to fix this memleak? */
        f->function_name = estrndup(method, method_len);
 
        return (union _zend_function *) f;
@@ -1325,10 +1342,12 @@ static union _zend_function * tidy_get_method(zval *obj, char *method, int metho
 zend_bool _php_tidy_node_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) {
 
        PHPTidyObj *obj = php_tidy_fetch_object(getThis());
+       zend_internal_function *func = (zend_internal_function *)EG(function_state_ptr)->function;
        PHPTidyObj *newobj;
        TidyNode tempnode;
        TidyAttr tempattr;
-               
+       zend_bool retval = TRUE;
+       
        int param;
        
        if(strstr(method, "has_")) {
@@ -1445,7 +1464,7 @@ zend_bool _php_tidy_node_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS)
                                                                                tempnode TSRMLS_CC);
                                } 
                                                        
-               }  else if(!strcmp(method, "prev")) {
+               } else if(!strcmp(method, "prev")) {
 
                                tempnode = tidyGetPrev(obj->node);
                                if(tempnode) {
@@ -1511,13 +1530,13 @@ zend_bool _php_tidy_node_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS)
                        }
                                                
                } else {
-                       
-                       return FALSE;
+                       retval = FALSE;
 
                }
        }
-       
-       return TRUE;
+       efree(func->function_name);
+       efree(func);
+       return retval;
        
 }
 
@@ -1547,7 +1566,7 @@ zend_bool _php_tidy_attr_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS)
        return TRUE;
 }
 
-static int tidy_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) {
+ int tidy_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) {
        
        PHPTidyObj *obj = php_tidy_fetch_object(getThis());
 
@@ -1567,7 +1586,7 @@ static int tidy_call_method(char *method, INTERNAL_FUNCTION_PARAMETERS) {
        return FALSE;
 }
 
-static int tidy_get_class_name(zval *obj, char **class_name, zend_uint *name_len, int parent TSRMLS_DC) {
+ int tidy_get_class_name(zval *obj, char **class_name, zend_uint *name_len, int parent TSRMLS_DC) {
        
        PHPTidyObj *object = php_tidy_fetch_object(obj);
        
@@ -1595,7 +1614,7 @@ static int tidy_get_class_name(zval *obj, char **class_name, zend_uint *name_len
        return TRUE;
 }
 
-static int tidy_objects_compare(zval *obj_one, zval *obj_two TSRMLS_DC) {
+ int tidy_objects_compare(zval *obj_one, zval *obj_two TSRMLS_DC) {
 
        PHPTidyObj *obj1, *obj2;