@@ -193,26 +193,27 @@ PHPAPI void php_url_encode_hash_ex(HashTable *ht, smart_str *formstr,
193
193
case IS_LONG :
194
194
smart_str_append_long (formstr , Z_LVAL_P (zdata ));
195
195
break ;
196
+ case IS_DOUBLE : {
197
+ zend_string * ekey ;
198
+ zend_string * tmp = zend_double_to_str (Z_DVAL_P (zdata ));
199
+ if (enc_type == PHP_QUERY_RFC3986 ) {
200
+ ekey = php_raw_url_encode (ZSTR_VAL (tmp ), ZSTR_LEN (tmp ));
201
+ } else {
202
+ ekey = php_url_encode (ZSTR_VAL (tmp ), ZSTR_LEN (tmp ));
203
+ }
204
+ smart_str_append (formstr , ekey );
205
+ zend_string_free (tmp );
206
+ zend_string_free (ekey );
207
+ break ;
208
+ }
196
209
case IS_FALSE :
197
210
smart_str_appendl (formstr , "0" , sizeof ("0" )- 1 );
198
211
break ;
199
212
case IS_TRUE :
200
213
smart_str_appendl (formstr , "1" , sizeof ("1" )- 1 );
201
214
break ;
202
- default :
203
- {
204
- zend_string * ekey ;
205
- zend_string * tmp ;
206
- zend_string * str = zval_get_tmp_string (zdata , & tmp );
207
- if (enc_type == PHP_QUERY_RFC3986 ) {
208
- ekey = php_raw_url_encode (ZSTR_VAL (str ), ZSTR_LEN (str ));
209
- } else {
210
- ekey = php_url_encode (ZSTR_VAL (str ), ZSTR_LEN (str ));
211
- }
212
- smart_str_append (formstr , ekey );
213
- zend_tmp_string_release (tmp );
214
- zend_string_free (ekey );
215
- }
215
+ /* All possible types are either handled here or previously */
216
+ EMPTY_SWITCH_DEFAULT_CASE ();
216
217
}
217
218
}
218
219
} ZEND_HASH_FOREACH_END ();
0 commit comments