[PHP-CVS] com php-src: basic fixes for ext/mysql: ext/mysql/php_mysql.c ext/mysql/php_mysql_structs.h

2013-12-02 Thread Anatol Belski
Commit:ae2103ba408846441e4394bb4b5fd2b139bdb943
Author:Anatol Belski a...@php.net Sun, 1 Dec 2013 09:45:26 +0100
Parents:   eb922c6c9c604b5712e397dee4de89de47047a9b
Branches:  str_size_and_int64

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=ae2103ba408846441e4394bb4b5fd2b139bdb943

Log:
basic fixes for ext/mysql

Changed paths:
  M  ext/mysql/php_mysql.c
  M  ext/mysql/php_mysql_structs.h

diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c
index 88bb9ab..7387f22 100644
--- a/ext/mysql/php_mysql.c
+++ b/ext/mysql/php_mysql.c
@@ -80,7 +80,7 @@ static int le_result, le_link, le_plink;
 #define SAFE_STRING(s) ((s)?(s):)
 
 #if MYSQL_VERSION_ID  32199 || defined(MYSQL_USE_MYSQLND)
-# define mysql_row_length_type unsigned long
+# define mysql_row_length_type php_uint_t
 # define HAVE_MYSQL_ERRNO
 #else
 # define mysql_row_length_type unsigned int
@@ -720,16 +720,16 @@ PHP_MINFO_FUNCTION(mysql)
 static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 {
char *user=NULL, *passwd=NULL, *host_and_port=NULL, *socket=NULL, 
*tmp=NULL, *host=NULL;
-   int  user_len = 0, passwd_len = 0, host_len = 0;
+   zend_str_size_int  user_len = 0, passwd_len = 0, host_len = 0;
char *hashed_details=NULL;
int hashed_details_length, port = MYSQL_PORT;
-   long client_flags = 0;
+   php_int_t client_flags = 0;
php_mysql_conn *mysql=NULL;
 #if MYSQL_VERSION_ID = 32230
void (*handler) (int);
 #endif
zend_bool free_host=0, new_link=0;
-   long connect_timeout;
+   php_int_t connect_timeout;
 
 php_error_docref(NULL TSRMLS_CC,
  E_DEPRECATED,
@@ -775,13 +775,13 @@ static void 
php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
} else {
/* mysql_pconnect does not support new_link parameter */
if (persistent) {
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
|s!s!s!l, host_and_port, host_len,
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
|S!S!S!i, host_and_port, host_len,
user, 
user_len, passwd, passwd_len,

client_flags)==FAILURE) {
return;
}
} else {
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
|s!s!s!bl, host_and_port, host_len,
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, 
|S!S!S!bi, host_and_port, host_len,

user, user_len, passwd, passwd_len,

new_link, client_flags)==FAILURE) {
return;
@@ -961,13 +961,13 @@ static void 
php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 */
if (!new_link  zend_hash_find(EG(regular_list), 
hashed_details, hashed_details_length+1,(void **) index_ptr)==SUCCESS) {
int type;
-   long link;
+   php_int_t link;
void *ptr;
 
if (Z_TYPE_P(index_ptr) != le_index_ptr) {
MYSQL_DO_CONNECT_RETURN_FALSE();
}
-   link = (long) index_ptr-ptr;
+   link = (php_int_t) index_ptr-ptr;
ptr = zend_list_find(link,type);   /* check if the 
link is still there */
if (ptr  (type==le_link || type==le_plink)) {
zend_list_addref(link);
@@ -1130,12 +1130,12 @@ PHP_FUNCTION(mysql_close)
 PHP_FUNCTION(mysql_select_db)
 {
char *db;
-   int db_len;
+   zend_str_size_int db_len;
zval *mysql_link = NULL;
int id = -1;
php_mysql_conn *mysql;
 
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, s|r, db, 
db_len, mysql_link) == FAILURE) {
+   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, S|r, db, 
db_len, mysql_link) == FAILURE) {
return;
}
 
@@ -1283,7 +1283,7 @@ PHP_FUNCTION(mysql_thread_id)
}
ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, 
MySQL-Link, le_link, le_plink);
 
-   RETURN_LONG((long) mysql_thread_id(mysql-conn));
+   RETURN_LONG((php_int_t) mysql_thread_id(mysql-conn));
 }
 /* }}} */
 
@@ -1353,10 +1353,11 @@ PHP_FUNCTION(mysql_set_charset)
 {
zval *mysql_link = NULL;
char *csname;
-   int id = -1, csname_len;
+   int id = -1;
+   zend_str_size_int csname_len;
php_mysql_conn *mysql;
 
-   if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, s|r, csname, 
csname_len, mysql_link) == FAILURE) {
+   if 

[PHP-CVS] com php-src: Fix bug #65196: NEWS ext/dom/document.c ext/dom/tests/bug65196.phpt

2013-12-02 Thread Michael Wallner
Commit:22fa3fbc5ffe75349c0edb6b776b6fb1168cb21c
Author:Michael Wallner m...@php.net Mon, 2 Dec 2013 16:58:34 +0100
Parents:   6408a1a59e6d371cd488687e28e18815ea97984e
Branches:  PHP-5.4 PHP-5.5 PHP-5.6 master

Link:   
http://git.php.net/?p=php-src.git;a=commitdiff;h=22fa3fbc5ffe75349c0edb6b776b6fb1168cb21c

Log:
Fix bug #65196

Passing DOMDocumentFragment to DOMDocument::saveHTML()
produces invalid markup, because a DocumentFragment is just a container
for child nodes and not a real node itself.

Bugs:
https://bugs.php.net/65196

Changed paths:
  M  NEWS
  M  ext/dom/document.c
  A  ext/dom/tests/bug65196.phpt


Diff:
diff --git a/NEWS b/NEWS
index bf759c8..3b20898 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,10 @@ PHP  
  NEWS
 1600). (Derick, T. Carter)
   . Fixed bug #61599 (Wrong Day of Week). (Derick, T. Carter)
 
+- DOM:
+  . Fixed bug #65196 (Passing DOMDocumentFragment to DOMDocument::saveHTML() 
+Produces invalid Markup). (Mike)
+
 - XSL
   . Fixed bug #49634 (Segfault throwing an exception in a XSL registered
 function). (Mike)
diff --git a/ext/dom/document.c b/ext/dom/document.c
index d17c7cb..0826863 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -2324,7 +2324,22 @@ PHP_FUNCTION(dom_document_save_html)
RETURN_FALSE;
}

-   size = htmlNodeDump(buf, docp, node);
+   if (node-type == XML_DOCUMENT_FRAG_NODE) {
+   int one_size;
+
+   for (node = node-children; node; node = node-next) {
+   one_size = htmlNodeDump(buf, docp, node);
+
+   if (one_size = 0) {
+   size += one_size;
+   } else {
+   size = -1;
+   break;
+   }
+   }
+   } else {
+   size = htmlNodeDump(buf, docp, node);
+   }
if (size = 0) {
mem = (xmlChar*) xmlBufferContent(buf);
if (!mem) {
diff --git a/ext/dom/tests/bug65196.phpt b/ext/dom/tests/bug65196.phpt
new file mode 100644
index 000..c77f972
--- /dev/null
+++ b/ext/dom/tests/bug65196.phpt
@@ -0,0 +1,26 @@
+--TEST--
+bug #65196 (Passing DOMDocumentFragment to DOMDocument::saveHTML() Produces 
invalid Markup)
+--SKIPIF--
+?php
+extension_loaded(dom) or die(skip need ext/dom);
+?
+--FILE--
+?php
+$dom = new DOMDocument();
+
+$frag1 = $dom-createDocumentFragment();
+var_dump($dom-saveHTML($frag1));
+
+$frag2 = $dom-createDocumentFragment();
+$div = $dom-createElement('div');
+$div-appendChild($dom-createElement('span'));
+$frag2-appendChild($div);
+$frag2-appendChild($dom-createElement('div'));
+$frag2-appendChild($dom-createElement('div'));
+var_dump($dom-saveHTML($frag2));
+?
+===DONE===
+--EXPECT--
+string(0) 
+string(46) divspan/span/divdiv/divdiv/div
+===DONE===


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