diff options
| author | Rasmus Lerdorf <rasmus@php.net> | 2011-09-23 15:19:48 +0000 |
|---|---|---|
| committer | Rasmus Lerdorf <rasmus@php.net> | 2011-09-23 15:19:48 +0000 |
| commit | 46f74e3523950ca04a2bc583cbc2f9739654d371 (patch) | |
| tree | 6a74e2e8a87849679ce1b1e0fbb8a5e84e1d3704 | |
| parent | c58f254354666c312e02e5069ebb87687b44df71 (diff) | |
| download | php-git-46f74e3523950ca04a2bc583cbc2f9739654d371.tar.gz | |
Add a test and declare the local vars locally
| -rw-r--r-- | ext/curl/interface.c | 9 | ||||
| -rw-r--r-- | ext/curl/tests/bug55767.phpt | 53 |
2 files changed, 58 insertions, 4 deletions
diff --git a/ext/curl/interface.c b/ext/curl/interface.c index bf74b57488..26b7ee0a7a 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -2007,10 +2007,6 @@ string_copy: HashTable *postfields; struct HttpPost *first = NULL; struct HttpPost *last = NULL; - char *postval; - char *string_key = NULL; - ulong num_key; - uint string_key_len; postfields = HASH_OF(*zvalue); if (!postfields) { @@ -2023,11 +2019,16 @@ string_copy: zend_hash_get_current_data(postfields, (void **) ¤t) == SUCCESS; zend_hash_move_forward(postfields) ) { + char *postval; + char *string_key = NULL; + uint string_key_len; + ulong num_key; SEPARATE_ZVAL(current); convert_to_string_ex(current); zend_hash_get_current_key_ex(postfields, &string_key, &string_key_len, &num_key, 0, NULL); + /* Pretend we have a string_key here */ if(!string_key) { spprintf(&string_key, 0, "%ld", num_key); diff --git a/ext/curl/tests/bug55767.phpt b/ext/curl/tests/bug55767.phpt new file mode 100644 index 0000000000..321f67ba60 --- /dev/null +++ b/ext/curl/tests/bug55767.phpt @@ -0,0 +1,53 @@ +--TEST-- +Test curl_opt() function with POST params from array with a numeric key +--SKIPIF-- +<?php +if (!extension_loaded("curl")) exit("skip curl extension not loaded"); +if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined"); +?> +--FILE-- +<?php +/* Prototype : bool curl_setopt(resource ch, int option, mixed value) + * Description: Set an option for a cURL transfer + * Source code: ext/curl/interface.c + * Alias to functions: + */ + + $host = getenv('PHP_CURL_HTTP_REMOTE_SERVER'); + + // start testing + echo '*** Testing curl sending through GET an POST ***' . "\n"; + + $url = "{$host}/get.php?test=getpost&get_param=Hello%20World"; + $ch = curl_init(); + + ob_start(); // start output buffering + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, array('Hello'=>'World','Foo'=>'Bar',100=>'John Doe')); + curl_setopt($ch, CURLOPT_URL, $url); //set the url we want to use + + $curl_content = curl_exec($ch); + curl_close($ch); + + var_dump( $curl_content ); +?> +===DONE=== +--EXPECTF-- +*** Testing curl sending through GET an POST *** +string(203) "array(2) { + ["test"]=> + string(7) "getpost" + ["get_param"]=> + string(11) "Hello World" +} +array(3) { + ["Hello"]=> + string(5) "World" + ["Foo"]=> + string(3) "Bar" + [100]=> + string(8) "John Doe" +} +" +===DONE=== |
