felipe          Wed Mar 25 12:05:51 2009 UTC

  Modified files:              
    /php-src/ext/pdo    pdo_dbh.c pdo_stmt.c 
  Log:
  - Fixed some code to be working with unicode
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_dbh.c?r1=1.164&r2=1.165&diff_format=u
Index: php-src/ext/pdo/pdo_dbh.c
diff -u php-src/ext/pdo/pdo_dbh.c:1.164 php-src/ext/pdo/pdo_dbh.c:1.165
--- php-src/ext/pdo/pdo_dbh.c:1.164     Mon Mar 23 23:58:49 2009
+++ php-src/ext/pdo/pdo_dbh.c   Wed Mar 25 12:05:51 2009
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_dbh.c,v 1.164 2009/03/23 23:58:49 felipe Exp $ */
+/* $Id: pdo_dbh.c,v 1.165 2009/03/25 12:05:51 felipe Exp $ */
 
 /* The PDO Database Handle Class */
 
@@ -1033,9 +1033,9 @@
        array_init(return_value);
 
        if (dbh->query_stmt) {
-               add_next_index_string(return_value, 
dbh->query_stmt->error_code, 1);
+               add_next_index_ascii_string(return_value, 
dbh->query_stmt->error_code, 1);
        } else {
-               add_next_index_string(return_value, dbh->error_code, 1);
+               add_next_index_ascii_string(return_value, dbh->error_code, 1);
        }
 
        if (dbh->methods->fetch_err) {
@@ -1265,7 +1265,6 @@
        const zend_function_entry *funcs;
        zend_function func;
        zend_internal_function *ifunc = (zend_internal_function*)&func;
-       int namelen;
        char *lc_name;
 
        if (!dbh || !dbh->methods || !dbh->methods->get_driver_methods) {
@@ -1282,9 +1281,12 @@
        zend_hash_init_ex(dbh->cls_methods[kind], 8, NULL, NULL, 
dbh->is_persistent, 0);
 
        while (funcs->fname) {
+               int namelen = strlen(funcs->fname)+1;
+               
                ifunc->type = ZEND_INTERNAL_FUNCTION;
                ifunc->handler = funcs->handler;
-               pdo_zstr_sval(ifunc->function_name) = (char*)funcs->fname;
+               ifunc->function_name.u = malloc(UBYTES(namelen));
+               u_charsToUChars(funcs->fname, ifunc->function_name.u, namelen);
                ifunc->scope = dbh->ce;
                ifunc->prototype = NULL;
                if (funcs->arg_info) {
@@ -1309,10 +1311,9 @@
                } else {
                        ifunc->fn_flags = ZEND_ACC_PUBLIC;
                }
-               namelen = strlen(funcs->fname);
                lc_name = emalloc(namelen+1);
                zend_str_tolower_copy(lc_name, funcs->fname, namelen);
-               zend_hash_add(dbh->cls_methods[kind], lc_name, namelen+1, 
&func, sizeof(func), NULL);
+               zend_ascii_hash_add(dbh->cls_methods[kind], lc_name, namelen+1, 
&func, sizeof(zend_function), NULL);
                efree(lc_name);
                funcs++;
        }
@@ -1365,7 +1366,7 @@
        }
 
 out:
-       if (std_object_handlers.get_method) {
+       if (!fbc && std_object_handlers.get_method) {
                fbc = std_object_handlers.get_method(object_pp, method_name, 
method_len TSRMLS_CC);
        }
 
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.218&r2=1.219&diff_format=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.218 php-src/ext/pdo/pdo_stmt.c:1.219
--- php-src/ext/pdo/pdo_stmt.c:1.218    Tue Mar 24 19:32:06 2009
+++ php-src/ext/pdo/pdo_stmt.c  Wed Mar 25 12:05:51 2009
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_stmt.c,v 1.218 2009/03/24 19:32:06 felipe Exp $ */
+/* $Id: pdo_stmt.c,v 1.219 2009/03/25 12:05:51 felipe Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -1537,12 +1537,12 @@
                        /* no break */
                case 2:
                        stmt->fetch.cls.ctor_args = ctor_args; /* we're not 
going to free these */
-                       if (Z_TYPE_P(arg2) != IS_STRING) {
+                       if (Z_TYPE_P(arg2) != IS_STRING && Z_TYPE_P(arg2) != 
IS_UNICODE) {
                                pdo_raise_impl_error(stmt->dbh, stmt, "HY000", 
"Invalid class name (should be a string)" TSRMLS_CC);
                                error = 1;
                                break;
                        } else {
-                               stmt->fetch.cls.ce = 
zend_fetch_class(Z_STRVAL_P(arg2), Z_STRLEN_P(arg2), ZEND_FETCH_CLASS_AUTO 
TSRMLS_CC);
+                               stmt->fetch.cls.ce = 
zend_u_fetch_class(Z_TYPE_P(arg2), Z_UNIVAL_P(arg2), Z_UNILEN_P(arg2), 
ZEND_FETCH_CLASS_AUTO TSRMLS_CC);
                                if (!stmt->fetch.cls.ce) {
                                        pdo_raise_impl_error(stmt->dbh, stmt, 
"HY000", "could not find user-specified class" TSRMLS_CC);
                                        error = 1;
@@ -2746,9 +2746,11 @@
 static union _zend_function *row_get_ctor(zval *object TSRMLS_DC)
 {
        static zend_internal_function ctor = {0};
+       int namelen = sizeof("__construct");
 
        ctor.type = ZEND_INTERNAL_FUNCTION;
-       pdo_zstr_sval(ctor.function_name) = "__construct";
+       ctor.function_name.u = malloc(UBYTES(namelen));
+       u_charsToUChars("__construct", ctor.function_name.u, namelen);  
 
        ctor.scope = pdo_row_ce;
        ctor.handler = ZEND_FN(dbstmt_constructor);



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

Reply via email to