]> granicus.if.org Git - php/commitdiff
Made a little clean up
authorXinchen Hui <laruence@php.net>
Thu, 15 May 2014 14:33:13 +0000 (22:33 +0800)
committerXinchen Hui <laruence@php.net>
Thu, 15 May 2014 14:33:13 +0000 (22:33 +0800)
ext/pdo/pdo_dbh.c
ext/pdo/pdo_sqlstate.c
ext/pdo_pgsql/pgsql_driver.c
ext/pdo_pgsql/pgsql_statement.c
ext/pdo_pgsql/php_pdo_pgsql_int.h

index 1a2aa39d94c40d7324581acdbdf3bc9d63344489..2ff3be7cbb0bee4c4016b5eb33ef4b29705bd367 100644 (file)
@@ -1529,18 +1529,6 @@ static void dbh_free(pdo_dbh_t *dbh TSRMLS_DC)
        //???pefree(dbh, dbh->is_persistent);
 }
 
-PDO_API void php_pdo_dbh_addref(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
-{
-       dbh->refcount++;
-}
-/* }}} */
-
-PDO_API void php_pdo_dbh_delref(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */
-{
-       dbh_free(dbh TSRMLS_CC);
-}
-/* }}} */
-
 static void pdo_dbh_free_storage(zend_object *std TSRMLS_DC)
 {
        pdo_dbh_t *dbh = php_pdo_dbh_fetch_object(std);
index 4d6a01011c5ffc4a72b09d193bfab04a9c5f4d8b..e3585844c653b23702e576bf6e7ac9e2379cd677 100644 (file)
@@ -319,7 +319,7 @@ int pdo_sqlstate_init_error_table(void)
        for (i = 0; i < sizeof(err_initializer)/sizeof(err_initializer[0]); i++) {
                info = &err_initializer[i];
 
-               zend_hash_str_add_ptr(&err_hash, info->state, sizeof(info->state), info);
+               zend_hash_str_add_ptr(&err_hash, info->state, sizeof(info->state), (void *)info);
        }
 
        return SUCCESS;
index 48320d314859298a4f88f787685e5bd90c1156b5..2b7f217418c80786335f906155d6ea0be3da399e 100644 (file)
@@ -137,13 +137,12 @@ static size_t pgsql_lob_read(php_stream *stream, char *buf, size_t count TSRMLS_
 static int pgsql_lob_close(php_stream *stream, int close_handle TSRMLS_DC)
 {
        struct pdo_pgsql_lob_self *self = (struct pdo_pgsql_lob_self*)stream->abstract;
-       pdo_dbh_t *dbh = self->dbh;
 
        if (close_handle) {
                lo_close(self->conn, self->lfd);
        }
+       zval_ptr_dtor(&self->dbh);
        efree(self);
-       php_pdo_dbh_delref(dbh TSRMLS_CC);
        return 0;
 }
 
@@ -173,13 +172,13 @@ php_stream_ops pdo_pgsql_lob_stream_ops = {
        NULL
 };
 
-php_stream *pdo_pgsql_create_lob_stream(pdo_dbh_t *dbh, int lfd, Oid oid TSRMLS_DC)
+php_stream *pdo_pgsql_create_lob_stream(zval *dbh, int lfd, Oid oid TSRMLS_DC)
 {
        php_stream *stm;
        struct pdo_pgsql_lob_self *self = ecalloc(1, sizeof(*self));
-       pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data;
+       pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)(Z_PDO_DBH_P(dbh))->driver_data;
 
-       self->dbh = dbh;
+       ZVAL_COPY_VALUE(&self->dbh, dbh);
        self->lfd = lfd;
        self->oid = oid;
        self->conn = H->server;
@@ -187,7 +186,7 @@ php_stream *pdo_pgsql_create_lob_stream(pdo_dbh_t *dbh, int lfd, Oid oid TSRMLS_
        stm = php_stream_alloc(&pdo_pgsql_lob_stream_ops, self, 0, "r+b");
 
        if (stm) {
-               php_pdo_dbh_addref(dbh TSRMLS_CC);
+               Z_ADDREF_P(dbh);
                return stm;
        }
 
@@ -568,11 +567,9 @@ static PHP_METHOD(PDO, pgsqlCopyFromArray)
                int command_failed = 0;
                int buffer_len = 0;
                zval *tmp;
-               HashPosition pos;
 
                PQclear(pgsql_result);
-               zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(pg_rows), &pos);
-               while ((tmp = zend_hash_get_current_data_ex(Z_ARRVAL_P(pg_rows), &pos)) != NULL) {
+               ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(pg_rows), tmp) {
                        int query_len;
                        convert_to_string_ex(tmp);
 
@@ -592,8 +589,7 @@ static PHP_METHOD(PDO, pgsqlCopyFromArray)
                                PDO_HANDLE_DBH_ERR();
                                RETURN_FALSE;
                        }
-                       zend_hash_move_forward_ex(Z_ARRVAL_P(pg_rows), &pos);
-               }
+               } ZEND_HASH_FOREACH_END();
                if (query) {
                        efree(query);
                }
@@ -959,7 +955,7 @@ static PHP_METHOD(PDO, pgsqlLOBOpen)
        lfd = lo_open(H->server, oid, mode);
 
        if (lfd >= 0) {
-               php_stream *stream = pdo_pgsql_create_lob_stream(dbh, lfd, oid TSRMLS_CC);
+               php_stream *stream = pdo_pgsql_create_lob_stream(getThis(), lfd, oid TSRMLS_CC);
                if (stream) {
                        php_stream_to_zval(stream, return_value);
                        return;
index 6cebb7d9f24a381ed4bbb2c76a0d656c00d2958f..bfceaf4949b667939bb9529a4c2802f15e5e661b 100644 (file)
@@ -323,12 +323,11 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
                                                                S->param_types[param->paramno] = OIDOID;
                                                                return 1;
                                                        } else {
-                                                               int len;
-
-                                                               SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
-                                                               Z_TYPE_INFO(param->parameter) = IS_STRING;
-
-                                                               if ((Z_STR(param->parameter) = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0)) == NULL) {
+                                                               zend_string *str = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0);
+                                                               if (str != NULL) {
+                                                                       SEPARATE_ZVAL_IF_NOT_REF(&param->parameter);
+                                                                       ZVAL_STR(&param->parameter, str);
+                                                               } else {
                                                                        ZVAL_EMPTY_STRING(&param->parameter);
                                                                }
                                                        }
@@ -449,8 +448,8 @@ static int pgsql_stmt_describe(pdo_stmt_t *stmt, int colno TSRMLS_DC)
                case OIDOID:
                        /* did the user bind the column as a LOB ? */
                        if (stmt->bound_columns && (
-                                       (param = zend_hash_index_find(stmt->bound_columns, colno)) != NULL ||
-                                       (param = zend_hash_str_find(stmt->bound_columns, cols[colno].name, cols[colno].namelen)) != NULL)) {
+                                       (param = zend_hash_index_find_ptr(stmt->bound_columns, colno)) != NULL ||
+                                       (param = zend_hash_str_find_ptr(stmt->bound_columns, cols[colno].name, cols[colno].namelen)) != NULL)) {
 
                                if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_LOB) {
                                        cols[colno].param_type = PDO_PARAM_LOB;
@@ -523,7 +522,7 @@ static int pgsql_stmt_get_col(pdo_stmt_t *stmt, int colno, char **ptr, unsigned
                                        Oid oid = (Oid)strtoul(*ptr, &end_ptr, 10);
                                        int loid = lo_open(S->H->server, oid, INV_READ);
                                        if (loid >= 0) {
-                                               *ptr = (char*)pdo_pgsql_create_lob_stream(stmt->dbh, loid, oid TSRMLS_CC);
+                                               *ptr = (char*)pdo_pgsql_create_lob_stream(&stmt->database_object_handle, loid, oid TSRMLS_CC);
                                                *len = 0;
                                                return *ptr ? 1 : 0;
                                        }
index 1fedababd25409e5bd528097891e924d74699c99..4d0652049e0aedb185913140be08916e0d877e11 100644 (file)
@@ -95,7 +95,7 @@ enum {
 };
 
 struct pdo_pgsql_lob_self {
-       pdo_dbh_t *dbh;
+       zval dbh;
        PGconn *conn;
        int lfd;
        Oid oid;
@@ -109,7 +109,7 @@ enum pdo_pgsql_specific_constants {
        PGSQL_TRANSACTION_UNKNOWN = PQTRANS_UNKNOWN
 };
 
-php_stream *pdo_pgsql_create_lob_stream(pdo_dbh_t *stmt, int lfd, Oid oid TSRMLS_DC);
+php_stream *pdo_pgsql_create_lob_stream(zval *pdh, int lfd, Oid oid TSRMLS_DC);
 extern php_stream_ops pdo_pgsql_lob_stream_ops;
 
 #endif /* PHP_PDO_PGSQL_INT_H */