]> granicus.if.org Git - php/commitdiff
Some encodings were assumed to be default and, thus, were not made
authorAndrei Zmievski <andrei@php.net>
Mon, 17 Apr 2006 16:08:08 +0000 (16:08 +0000)
committerAndrei Zmievski <andrei@php.net>
Mon, 17 Apr 2006 16:08:08 +0000 (16:08 +0000)
persistent.

ext/soap/php_encoding.c
ext/soap/php_encoding.h
ext/soap/php_sdl.c

index a4dfb012ab759c665a93077952834d0ba488d34b..5c3c6db56fd1aebec6eb6011ed3d944943b0f9df 100644 (file)
@@ -211,6 +211,9 @@ encode defaultEncoding[] = {
        {{END_KNOWN_TYPES, NULL, NULL, NULL}, guess_zval_convert, guess_xml_convert}
 };
 
+int numDefaultEncodings = sizeof(defaultEncoding)/sizeof(encode);
+
+
 void whiteSpace_replace(char* str)
 {
        while (*str != '\0') {
index 2282a9ad71c9c60b89c6e136b9a2de24a25302a8..1a896d0336ad1b3813be351dbaa50c42b1c9f97a 100644 (file)
@@ -222,5 +222,6 @@ void delete_encoder(void *handle);
 void delete_encoder_persistent(void *handle);
 
 extern encode defaultEncoding[];
+extern int numDefaultEncodings;
 
 #endif
index b239b9a9e7b88c5ad48ef1285a40a62b53b1a37f..ba7fa5ad575145c4bbd2e2d1124d2d72e9efa351 100644 (file)
@@ -2292,7 +2292,7 @@ static void make_persistent_sdl_type_ref(sdlTypePtr *type, HashTable *ptr_map, H
 {
        sdlTypePtr *tmp;
 
-       if (zend_hash_find(ptr_map, (char *)(*type), sizeof(sdlTypePtr), (void**)&tmp) == SUCCESS) {
+       if (zend_hash_find(ptr_map, (char *)type, sizeof(sdlTypePtr), (void**)&tmp) == SUCCESS) {
                *type = *tmp;
        } else {
                zend_hash_next_index_insert(bp_types, (void*)&type, sizeof(sdlTypePtr*), NULL);
@@ -2305,11 +2305,11 @@ static void make_persistent_sdl_encoder_ref(encodePtr *enc, HashTable *ptr_map,
        encodePtr *tmp;
 
        /* do not process defaultEncoding's here */
-       if ((*enc)->details.sdl_type == NULL) {
+       if ((*enc) >= defaultEncoding && (*enc) < defaultEncoding + numDefaultEncodings) {
                return;
        }
 
-       if (zend_hash_find(ptr_map, (char *)(*enc), sizeof(encodePtr), (void**)&tmp) == SUCCESS) {
+       if (zend_hash_find(ptr_map, (char *)enc, sizeof(encodePtr), (void**)&tmp) == SUCCESS) {
                *enc = *tmp;
        } else {
                zend_hash_next_index_insert(bp_encoders, (void*)&enc, sizeof(encodePtr*), NULL);
@@ -2513,7 +2513,7 @@ static sdlAttributePtr make_persistent_sdl_attribute(sdlAttributePtr attr, HashT
        }
 
        /* we do not want to process defaultEncoding's here */
-       if (pattr->encode && pattr->encode->details.sdl_type) {
+       if (pattr->encode) {
                make_persistent_sdl_encoder_ref(&pattr->encode, ptr_map, bp_encoders);
        }
 
@@ -2625,7 +2625,7 @@ static sdlTypePtr make_persistent_sdl_type(sdlTypePtr type, HashTable *ptr_map,
        }
 
        /* we do not want to process defaultEncoding's here */
-       if (ptype->encode && ptype->encode->details.sdl_type) {
+       if (ptype->encode) {
                make_persistent_sdl_encoder_ref(&ptype->encode, ptr_map, bp_encoders);
        }