@@ -1118,29 +1118,27 @@ static xmlNodePtr to_xml_double(encodeTypePtr type, zval *data, int style, xmlNo
11181118
11191119static  zval  * to_zval_bool (zval  * ret , encodeTypePtr  type , xmlNodePtr  data )
11201120{
1121- 	ZVAL_NULL (ret );
11221121	FIND_XML_NULL (data , ret );
11231122
1124- 	if  (data  &&  data -> children ) {
1125- 		if  (data -> children -> type  ==  XML_TEXT_NODE  &&  data -> children -> next  ==  NULL ) {
1126- 			whiteSpace_collapse (data -> children -> content );
1127- 			if  (stricmp ((char * )data -> children -> content , "true" ) ==  0  || 
1128- 				stricmp ((char * )data -> children -> content , "t" ) ==  0  || 
1129- 				strcmp ((char * )data -> children -> content , "1" ) ==  0 ) {
1130- 				ZVAL_TRUE (ret );
1131- 			} else  if  (stricmp ((char * )data -> children -> content , "false" ) ==  0  || 
1132- 				stricmp ((char * )data -> children -> content , "f" ) ==  0  || 
1133- 				strcmp ((char * )data -> children -> content , "0" ) ==  0 ) {
1134- 				ZVAL_FALSE (ret );
1135- 			} else  {
1136- 				ZVAL_STRING (ret , (char * )data -> children -> content );
1137- 				convert_to_boolean (ret );
1138- 			}
1139- 		} else  {
1140- 			soap_error0 (E_ERROR , "Encoding: Violation of encoding rules" );
1141- 		}
1142- 	} else  {
1123+ 	if  (!data -> children ) {
11431124		ZVAL_NULL (ret );
1125+ 		return  ret ;
1126+ 	}
1127+ 	if  (data -> children -> type  !=  XML_TEXT_NODE  ||  data -> children -> next  !=  NULL ) {
1128+ 		// TODO Convert to exception? 
1129+ 		soap_error0 (E_ERROR , "Encoding: Violation of encoding rules" );
1130+ 	}
1131+ 
1132+ 	whiteSpace_collapse (data -> children -> content );
1133+ 	if  (
1134+ 		data -> children -> content [0 ] ==  '\0'  /* Check for empty string */ 
1135+ 		||  strcmp ((const  char * )data -> children -> content , "0" ) ==  0 
1136+ 		||  stricmp ((const  char * )data -> children -> content , "f" ) ==  0 
1137+ 		||  stricmp ((const  char * )data -> children -> content , "false" ) ==  0 
1138+ 	) {
1139+ 		ZVAL_FALSE (ret );
1140+ 	} else  {
1141+ 		ZVAL_TRUE (ret );
11441142	}
11451143	return  ret ;
11461144}
0 commit comments