helly           Sun Oct  2 16:38:20 2005 EDT

  Modified files:              (Branch: PHP_5_1)
    /php-src/ext/pdo    pdo.c pdo_dbh.c php_pdo.h php_pdo_int.h 
  Log:
  - MFH PDOException base
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo.c?r1=1.57.2.7&r2=1.57.2.8&ty=u
Index: php-src/ext/pdo/pdo.c
diff -u php-src/ext/pdo/pdo.c:1.57.2.7 php-src/ext/pdo/pdo.c:1.57.2.8
--- php-src/ext/pdo/pdo.c:1.57.2.7      Mon Sep 19 20:35:20 2005
+++ php-src/ext/pdo/pdo.c       Sun Oct  2 16:38:18 2005
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo.c,v 1.57.2.7 2005/09/20 00:35:20 iliaa Exp $ */
+/* $Id: pdo.c,v 1.57.2.8 2005/10/02 20:38:18 helly Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -60,10 +60,42 @@
        return pdo_exception_ce;
 }
 
+PDO_API zend_class_entry *php_pdo_get_exception_base(int root TSRMLS_DC)
+{
+#if can_handle_soft_dependency_on_SPL && defined(HAVE_SPL) && 
((PHP_MAJOR_VERSION > 5) || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1))
+       if (!root) {
+               return spl_ce_RuntimeException;
+       }
+#endif
+#if (PHP_MAJOR_VERSION < 6)
+       return zend_exception_get_default();
+#else
+       return zend_exception_get_default(TSRMLS_C);
+#endif
+}
+
 zend_class_entry *pdo_dbh_ce, *pdo_dbstmt_ce, *pdo_row_ce;
 
+/* proto array pdo_drivers()
+ Return array of available PDO drivers */
+PHP_FUNCTION(pdo_drivers)
+{
+       HashPosition pos;
+       pdo_driver_t **pdriver;
+       
+       array_init(return_value);
+
+       zend_hash_internal_pointer_reset_ex(&pdo_driver_hash, &pos);
+       while (SUCCESS == zend_hash_get_current_data_ex(&pdo_driver_hash, 
(void**)&pdriver, &pos)) {
+               add_next_index_stringl(return_value, 
(char*)(*pdriver)->driver_name, (*pdriver)->driver_name_len, 1);
+               zend_hash_move_forward_ex(&pdo_driver_hash, &pos);
+       }
+}
+/* }}} */
+
 /* {{{ pdo_functions[] */
 function_entry pdo_functions[] = {
+       PHP_FE(pdo_drivers,             NULL)
        {NULL, NULL, NULL}
 };
 /* }}} */
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_dbh.c?r1=1.82.2.6&r2=1.82.2.7&ty=u
Index: php-src/ext/pdo/pdo_dbh.c
diff -u php-src/ext/pdo/pdo_dbh.c:1.82.2.6 php-src/ext/pdo/pdo_dbh.c:1.82.2.7
--- php-src/ext/pdo/pdo_dbh.c:1.82.2.6  Sun Oct  2 16:07:11 2005
+++ php-src/ext/pdo/pdo_dbh.c   Sun Oct  2 16:38:18 2005
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_dbh.c,v 1.82.2.6 2005/10/02 20:07:11 helly Exp $ */
+/* $Id: pdo_dbh.c,v 1.82.2.7 2005/10/02 20:38:18 helly Exp $ */
 
 /* The PDO Database Handle Class */
 
@@ -84,7 +84,7 @@
                }
        } else {
                zval *ex;
-               zend_class_entry *def_ex = zend_exception_get_default(), 
*pdo_ex = php_pdo_get_exception();
+               zend_class_entry *def_ex = php_pdo_get_exception_base(1 
TSRMLS_CC), *pdo_ex = php_pdo_get_exception();
 
                MAKE_STD_ZVAL(ex);
                object_init_ex(ex, pdo_ex);
@@ -165,7 +165,7 @@
                }
        } else if (EG(exception) == NULL) {
                zval *ex;
-               zend_class_entry *def_ex = zend_exception_get_default(), 
*pdo_ex = php_pdo_get_exception();
+               zend_class_entry *def_ex = php_pdo_get_exception_base(1 
TSRMLS_CC), *pdo_ex = php_pdo_get_exception();
 
                MAKE_STD_ZVAL(ex);
                object_init_ex(ex, pdo_ex);
@@ -1074,7 +1074,6 @@
 }
 /* }}} */
 
-
 function_entry pdo_dbh_functions[] = {
        ZEND_MALIAS(PDO, __construct, dbh_constructor,  NULL,                   
ZEND_ACC_PUBLIC)
        PHP_ME(PDO, prepare,            NULL,                                   
ZEND_ACC_PUBLIC)
@@ -1348,6 +1347,10 @@
                pefree(dbh->password, dbh->is_persistent);
        }
 
+       if (dbh->def_stmt_ctor_args) {
+               zval_ptr_dtor(&dbh->def_stmt_ctor_args);
+       }
+
        pefree(dbh, dbh->is_persistent);
 }
 
http://cvs.php.net/diff.php/php-src/ext/pdo/php_pdo.h?r1=1.7.2.3&r2=1.7.2.4&ty=u
Index: php-src/ext/pdo/php_pdo.h
diff -u php-src/ext/pdo/php_pdo.h:1.7.2.3 php-src/ext/pdo/php_pdo.h:1.7.2.4
--- php-src/ext/pdo/php_pdo.h:1.7.2.3   Fri Sep 30 22:48:11 2005
+++ php-src/ext/pdo/php_pdo.h   Sun Oct  2 16:38:18 2005
@@ -16,13 +16,17 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_pdo.h,v 1.7.2.3 2005/10/01 02:48:11 wez Exp $ */
+/* $Id: php_pdo.h,v 1.7.2.4 2005/10/02 20:38:18 helly Exp $ */
 
 #ifndef PHP_PDO_H
 #define PHP_PDO_H
 
 #include "zend.h"
 
+#if PHP_MAJOR_VERSION > 5 || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 1)
+#define can_handle_soft_dependency_on_SPL 1
+#endif
+
 extern zend_module_entry pdo_module_entry;
 #define phpext_pdo_ptr &pdo_module_entry
 
http://cvs.php.net/diff.php/php-src/ext/pdo/php_pdo_int.h?r1=1.17.2.2&r2=1.17.2.3&ty=u
Index: php-src/ext/pdo/php_pdo_int.h
diff -u php-src/ext/pdo/php_pdo_int.h:1.17.2.2 
php-src/ext/pdo/php_pdo_int.h:1.17.2.3
--- php-src/ext/pdo/php_pdo_int.h:1.17.2.2      Sat Sep 24 10:18:01 2005
+++ php-src/ext/pdo/php_pdo_int.h       Sun Oct  2 16:38:18 2005
@@ -18,13 +18,14 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: php_pdo_int.h,v 1.17.2.2 2005/09/24 14:18:01 edink Exp $ */
+/* $Id: php_pdo_int.h,v 1.17.2.3 2005/10/02 20:38:18 helly Exp $ */
 
 /* Stuff private to the PDO extension and not for consumption by PDO drivers
  * */
 
 extern HashTable pdo_driver_hash;
 extern zend_class_entry *pdo_exception_ce;
+PDO_API zend_class_entry *php_pdo_get_exception_base(int root TSRMLS_DC);
 int php_pdo_list_entry(void);
 
 void pdo_dbh_init(TSRMLS_D);

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

Reply via email to