summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/oci8/oci8.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c
index c96ae51f65..cedeb064e5 100644
--- a/ext/oci8/oci8.c
+++ b/ext/oci8/oci8.c
@@ -816,8 +816,9 @@ oci_make_pval(pval *value,oci_statement *statement,oci_out_column *column, char
}
if (column->is_cursor) { /* REFCURSOR -> simply return the statement id */
- value->type = IS_LONG;
+ value->type = IS_RESOURCE;
value->value.lval = column->stmtid;
+ zend_list_addref(column->stmtid);
} else if (column->is_descr) {
if ((column->data_type != SQLT_RDD) && (mode & OCI_RETURN_LOBS)) {
/* OCI_RETURN_LOBS means that we want the content of the LOB back instead of the locator */
@@ -1996,10 +1997,18 @@ _oci_close_server(oci_server *server)
if (server->open) {
if (server->pServer && OCI(pError)) {
+#if APACHE
+ void (*handler) (int);
+ handler = signal(SIGCHLD, SIG_DFL);
+#endif
OCI(error) =
OCIServerDetach(server->pServer,
OCI(pError),
OCI_DEFAULT);
+
+#if APACHE
+ signal(SIGCHLD,handler);
+#endif
if (OCI(error)) {
oci_error(OCI(pError), "oci_close_server OCIServerDetach", OCI(error));