rasmus                                   Fri, 23 Sep 2011 15:19:48 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=317208

Log:
Add a test and declare the local vars locally

Changed paths:
    U   php/php-src/branches/PHP_5_4/ext/curl/interface.c
    A   php/php-src/branches/PHP_5_4/ext/curl/tests/bug55767.phpt
    U   php/php-src/trunk/ext/curl/interface.c
    A   php/php-src/trunk/ext/curl/tests/bug55767.phpt

Modified: php/php-src/branches/PHP_5_4/ext/curl/interface.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/curl/interface.c   2011-09-23 15:12:01 UTC 
(rev 317207)
+++ php/php-src/branches/PHP_5_4/ext/curl/interface.c   2011-09-23 15:19:48 UTC 
(rev 317208)
@@ -2007,10 +2007,6 @@
                                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 @@
                                         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);

Added: php/php-src/branches/PHP_5_4/ext/curl/tests/bug55767.phpt
===================================================================
--- php/php-src/branches/PHP_5_4/ext/curl/tests/bug55767.phpt                   
        (rev 0)
+++ php/php-src/branches/PHP_5_4/ext/curl/tests/bug55767.phpt   2011-09-23 
15:19:48 UTC (rev 317208)
@@ -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===

Modified: php/php-src/trunk/ext/curl/interface.c
===================================================================
--- php/php-src/trunk/ext/curl/interface.c      2011-09-23 15:12:01 UTC (rev 
317207)
+++ php/php-src/trunk/ext/curl/interface.c      2011-09-23 15:19:48 UTC (rev 
317208)
@@ -2007,10 +2007,6 @@
                                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,6 +2019,10 @@
                                         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);

Added: php/php-src/trunk/ext/curl/tests/bug55767.phpt
===================================================================
--- php/php-src/trunk/ext/curl/tests/bug55767.phpt                              
(rev 0)
+++ php/php-src/trunk/ext/curl/tests/bug55767.phpt      2011-09-23 15:19:48 UTC 
(rev 317208)
@@ -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===

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to