zend_long type = 0;
php_oci_statement *statement;
php_oci_define *define, *tmp_define;
+ zend_string *zvtmp;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "rsz/|l", &stmt, &name, &name_len, &var, &type) == FAILURE) {
return;
define = ecalloc(1,sizeof(php_oci_define));
- //if (zend_hash_add(statement->defines, name, name_len, define, sizeof(php_oci_define), (void **)&tmp_define) == SUCCESS) {
- if ((tmp_define = zend_hash_add_new_ptr(statement->defines, zend_string_init(name, name_len, 0), define)) != NULL) {
+ /* if (zend_hash_add(statement->defines, name, name_len, define, sizeof(php_oci_define), (void **)&tmp_define) == SUCCESS) { */
+ zvtmp = zend_string_init(name, name_len, 0);
+ if ((tmp_define = zend_hash_add_new_ptr(statement->defines, zvtmp, define)) != NULL) {
efree(define);
+ zend_string_release(zvtmp);
define = tmp_define;
} else {
efree(define);
+ zend_string_release(zvtmp);
RETURN_FALSE;
}
if (flags & PHP_OCI_NUM) {
zend_hash_next_index_insert(Z_ARRVAL(row), &element);
} else { /* default to ASSOC */
- zend_symtable_update(Z_ARRVAL(row), zend_string_init(columns[ i ]->name, columns[ i ]->name_len, 0), &element);
+ zend_string *zvtmp;
+ zvtmp = zend_string_init(columns[ i ]->name, columns[ i ]->name_len, 0);
+ zend_symtable_update(Z_ARRVAL(row), zvtmp, &element);
+ zend_string_release(zvtmp);
}
}
}
} else { /* default to ASSOC */
for (i = 0; i < statement->ncolumns; i++) {
+ zend_string *zvtmp;
columns[ i ] = php_oci_statement_get_column(statement, i + 1, NULL, 0);
array_init(&tmp);
- outarrs[ i ] = zend_symtable_update(Z_ARRVAL_P(array), zend_string_init(columns[ i ]->name, columns[ i ]->name_len, 0), &tmp);
+ zvtmp = zend_string_init(columns[ i ]->name, columns[ i ]->name_len, 0);
+ outarrs[ i ] = zend_symtable_update(Z_ARRVAL_P(array), zvtmp, &tmp);
+ zend_string_release(zvtmp);
}
}
if (errcode) {
array_init(return_value);
add_assoc_long(return_value, "code", errcode);
- // TODO: avoid reallocation ???
+ /* TODO: avoid reallocation ??? */
add_assoc_string(return_value, "message", (char*) errbuf);
efree(errbuf);
add_assoc_long(return_value, "offset", error_offset);
outcol = (php_oci_out_column *) ecalloc(1, sizeof(php_oci_out_column));
if ((outcol = zend_hash_index_update_ptr(statement->columns, counter, outcol)) == NULL) {
- efree(statement->columns);
+ FREE_HASHTABLE(statement->columns);
/* out of memory */
return 1;
}
if (statement->columns) {
zend_hash_destroy(statement->columns);
- efree(statement->columns);
+ FREE_HASHTABLE(statement->columns);
}
if (statement->binds) {
zend_hash_destroy(statement->binds);
- efree(statement->binds);
+ FREE_HASHTABLE(statement->binds);
}
if (statement->defines) {
zend_hash_destroy(statement->defines);
- efree(statement->defines);
+ FREE_HASHTABLE(statement->defines);
}
if (statement->parent_stmtid) {
zend_hash_init(statement->binds, 13, NULL, php_oci_bind_hash_dtor, 0);
}
- memset((void*)&bind,0,sizeof(php_oci_bind));
if ((old_bind = zend_hash_str_find_ptr(statement->binds, name, name_len)) != NULL) {
bindp = old_bind;
zval_ptr_dtor(&bindp->zval);
} else {
- bindp = zend_hash_update_ptr(statement->binds, zend_string_init(name, name_len + 1, 0), &bind);
+ zend_string *zvtmp;
+ zvtmp = zend_string_init(name, name_len + 1, 0);
+ bindp = (php_oci_bind *) ecalloc(1, sizeof(php_oci_bind));
+ bindp = zend_hash_update_ptr(statement->binds, zvtmp, bindp);
+ zend_string_release(zvtmp);
}
bindp->descriptor = oci_desc;
bindp->parent_statement = statement;
ZVAL_COPY(&bindp->zval, var);
bindp->type = type;
- Z_ADDREF_P(var);
+ Z_TRY_ADDREF_P(var);
PHP_OCI_CALL_RETURN(errstatus,
OCIBindByName,
} else {
convert_to_string(val);
zval_dtor(val);
-
- //Z_STRLEN_P(val) = PHP_OCI_PIECE_SIZE; /* 64K-1 is max XXX */
- //Z_STRVAL_P(val) = ecalloc(1, Z_STRLEN_P(phpbind->zval) + 1);
- // XXX is this right?
+
+#if 0
+ Z_STRLEN_P(val) = PHP_OCI_PIECE_SIZE; /* 64K-1 is max XXX */
+ Z_STRVAL_P(val) = ecalloc(1, Z_STRLEN_P(phpbind->zval) + 1);
+ /* XXX is this right? */
+#endif
ZVAL_STRINGL(val, NULL, Z_STRLEN(phpbind->zval) + 1);
/* XXX we assume that zend-zval len has 4 bytes */
{
php_oci_bind *bind, *bindp;
sword errstatus;
+ zend_string *zvtmp;
convert_to_array(var);
zend_hash_init(statement->binds, 13, NULL, php_oci_bind_hash_dtor, 0);
}
- bindp = zend_hash_update_ptr(statement->binds, zend_string_init(name, name_len + 1, 0), bind);
+ zvtmp = zend_string_init(name, name_len + 1, 0);
+ bindp = zend_hash_update_ptr(statement->binds, zvtmp, bind);
+ zend_string_release(zvtmp);
bindp->descriptor = NULL;
bindp->statement = NULL;