Browse Source

Add a test and declare the local vars locally

pull/271/head
Rasmus Lerdorf 15 years ago
parent
commit
46f74e3523
  1. 9
      ext/curl/interface.c
  2. 53
      ext/curl/tests/bug55767.phpt

9
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 **) &current) == 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);

53
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===
Loading…
Cancel
Save