#include "internal_functions.h"
#include "php3_list.h"
#include "head.h"
+ #define HASH_DTOR (void (*)(void *))
#else
#include "ext/standard/head.h"
#define php3tls_pval_destructor(a) zval_dtor(a)
+ #define HASH_DTOR (int (*)(void *))
#endif
static void _oci8_close_conn(oci8_connection *connection);
static void _oci8_free_stmt(oci8_statement *statement);
static void _oci8_free_column(oci8_out_column *column);
-static void _oci8_free_descr(oci8_descriptor *descr);
+static int _oci8_free_descr(oci8_descriptor *descr);
static oci8_connection *oci8_get_conn(int, const char *, HashTable *);
static oci8_statement *oci8_get_stmt(int, const char *, HashTable *);
efree(define->name);
define->name = 0;
}
- return 0;
+ return 1;
}
/* }}} */
oci8_debug("oci8_make_pval: %16s,retlen = %4d,cb_retlen = %d,storage_size4 = %4d,indicator %4d, retcode = %4d",
column->name,column->retlen,column->cb_retlen,column->storage_size4,column->indicator,column->retcode);
+/*
memset(value,0,sizeof(pval));
+*/
if (column->indicator == -1) { /* column is NULL */
var_reset(value); /* XXX we NEED to make sure that there's no data attached to this yet!!! */
statement->columns = emalloc(sizeof(HashTable));
if (!statement->columns ||
- _php3_hash_init(statement->columns, 13, NULL,(void (*)(void *))_oci8_free_column, 0) == FAILURE) {
+ _php3_hash_init(statement->columns, 13, NULL,HASH_DTOR _oci8_free_column, 0) == FAILURE) {
/* out of memory */
return 0;
}
if (! column->define) {
continue;
}
-
+
php3tls_pval_destructor(column->define->pval);
oci8_make_pval(column->define->pval,statement,column,"OCIFetch",0);
/* {{{ _oci8_free_descr()
*/
-static void
+static int
_oci8_free_descr(oci8_descriptor *descr)
{
OCI8_TLS_VARS;
oci8_debug("oci8_free_descr: %x",descr->ocidescr);
OCIDescriptorFree(descr->ocidescr, descr->type);
+
+ return 1;
}
/* }}} */
/* {{{ oci8_open_server()
connection->descriptors = emalloc(sizeof(HashTable));
if (!connection->descriptors ||
- _php3_hash_init(connection->descriptors, 13, NULL,(void (*)(void *))_oci8_free_descr, 0) == FAILURE) {
+ _php3_hash_init(connection->descriptors, 13, NULL,HASH_DTOR _oci8_free_descr, 0) == FAILURE) {
goto CLEANUP;
}
if (statement->defines == NULL) {
statement->defines = emalloc(sizeof(HashTable));
if (statement->defines == NULL ||
- _php3_hash_init(statement->defines, 13, NULL, (void (*)(void *))oci8_free_define, 0) == FAILURE) {
+ _php3_hash_init(statement->defines, 13, NULL,HASH_DTOR oci8_free_define, 0) == FAILURE) {
/* out of memory */
RETURN_FALSE;
}
#if PHP_API_VERSION >= 19990421
element = emalloc(sizeof(pval));
- INIT_PZVAL(element);
#endif
if ((mode & OCI_NUM) || (! (mode & OCI_ASSOC))) { /* OCI_NUM is default */
oci8_make_pval(element,statement,column, "OCIFetchInto",mode);
+
#if PHP_API_VERSION >= 19990421
INIT_PZVAL(element);
_php3_hash_index_update(array->value.ht, i, (void *)&element, sizeof(pval*), NULL);
oci8_make_pval(element,statement,column, "OCIFetchInto",mode);
#if PHP_API_VERSION >= 19990421
+ INIT_PZVAL(element);
_php3_hash_update(array->value.ht, column->name, column->name_len+1, (void *)&element, sizeof(pval*), NULL);
#else
_php3_hash_update(array->value.ht, column->name, column->name_len+1, (void *)element, sizeof(pval), NULL);