Changeset 68

Show
Ignore:
Timestamp:
06/25/08 15:29:27 (2 months ago)
Author:
scott
Message:

Fix error when querySingle returns no rows and use NULL rather than empty string so a differentiation can be made.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/sqlite3.c

    r66 r68  
    571571                { 
    572572                        if (!entire_row) { 
    573                                 ZVAL_EMPTY_STRING(return_value); 
     573                                RETVAL_NULL(); 
    574574                        } else { 
    575575                                array_init(return_value); 
    576576                        } 
     577                        break; 
    577578                } 
    578579                default: 
    579580                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to execute statement: %s", sqlite3_errmsg(db->db)); 
    580                         RETURN_FALSE; 
    581         } 
    582         sqlite3_finalize(stmt);         
     581                        RETVAL_FALSE; 
     582        } 
     583        sqlite3_finalize(stmt); 
    583584} 
    584585/* }}} */ 
     
    894895        } 
    895896 
    896         zend_llist_del_element(&(internp->db_object->stmt_list), internp->stmt,  
     897        zend_llist_del_element(&(internp->db_object->stmt_list), internp->stmt, 
    897898                                                        (int (*)(void *, void *)) php_sqlite3_compare_stmt_free); 
    898899 
     
    12301231                { 
    12311232                        php_sqlite3_stmt_free_list *free_item; 
    1232                          
     1233 
    12331234                        sqlite3_reset(internp->stmt); 
    12341235                        object_init_ex(return_value, php_sqlite3_result_entry); 
     
    12411242                        Z_ADDREF_P(object); 
    12421243                        Z_ADDREF_P(return_value); 
    1243                          
     1244 
    12441245                        zend_llist_add_element(&(internp->db_object->stmt_list), &free_item); 
    12451246                        /* We don't need the default one that came with it now */ 
     
    13491350 
    13501351                                data = sqlite_value_to_zval(*(internp->intern_stmt), i); 
    1351                                  
     1352 
    13521353                                if (mode & PHP_SQLITE3_NUM) { 
    13531354                                        add_index_zval(return_value, i, data); 
     
    14051406        zval *object = getThis(); 
    14061407        internp = (php_sqlite3_result *)zend_object_store_get_object(object TSRMLS_CC); 
    1407                          
     1408 
    14081409        if (ZEND_NUM_ARGS() != 0) { 
    14091410                WRONG_PARAM_COUNT; 
     
    14291430        /* We need to finalize an internal statement */ 
    14301431        if (internp->is_prepared_statement == 0) { 
    1431                 zend_llist_del_element(&(internp->db_object->stmt_list), *(internp->intern_stmt),  
     1432                zend_llist_del_element(&(internp->db_object->stmt_list), *(internp->intern_stmt), 
    14321433                                                        (int (*)(void *, void *)) php_sqlite3_compare_stmt_free); 
    14331434        } else { 
     
    16771678{ 
    16781679        php_sqlite3_stmt_free_list *free_item = (php_sqlite3_stmt_free_list *)*item; 
    1679          
     1680 
    16801681        zval_dtor(free_item->result_object); 
    16811682        Z_TYPE_P(free_item->result_object) = IS_NULL; 
     
    17921793        memset(&intern->zo, 0, sizeof(php_sqlite3_db)); 
    17931794 
    1794         zend_llist_init(&(intern->stmt_list),   sizeof(php_sqlite3_stmt_free_list *), (llist_dtor_func_t)php_sqlite3_stmt_free, 0);     
     1795        zend_llist_init(&(intern->stmt_list),   sizeof(php_sqlite3_stmt_free_list *), (llist_dtor_func_t)php_sqlite3_stmt_free, 0); 
    17951796        intern->db = NULL; 
    17961797        zend_object_std_init(&intern->zo, class_type TSRMLS_CC);