From da6ddba2e80ad747d7589ce48f901ca7af1b6069 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Mon, 28 Feb 2000 19:12:38 -0800
Subject: [PATCH] bugfix in locking code

Rev: src/modules/Oracle/oracle.c:1.21
---
 src/modules/Oracle/oracle.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/modules/Oracle/oracle.c b/src/modules/Oracle/oracle.c
index 6187b79263..811acae3cd 100644
--- a/src/modules/Oracle/oracle.c
+++ b/src/modules/Oracle/oracle.c
@@ -1,5 +1,5 @@
 /*
- * $Id: oracle.c,v 1.20 2000/02/28 23:33:57 hubbe Exp $
+ * $Id: oracle.c,v 1.21 2000/02/29 03:12:38 hubbe Exp $
  *
  * Pike interface to Oracle databases.
  *
@@ -35,7 +35,7 @@
 #include <ociapr.h>
 
 
-RCSID("$Id: oracle.c,v 1.20 2000/02/28 23:33:57 hubbe Exp $");
+RCSID("$Id: oracle.c,v 1.21 2000/02/29 03:12:38 hubbe Exp $");
 
 
 #define BLOB_FETCH_CHUNK 16384
@@ -105,6 +105,7 @@ static void exit_dbresult_struct(struct object *o)
     r->dbcon->cdas = r->curs;
   }
 
+/*  fprintf(stderr,"Unlocking dbcon\n"); */
   mt_unlock(& r->dbcon->lock);
 
   if(r->parent)
@@ -535,8 +536,11 @@ static void f_big_query(INT32 args)
 
   THREADS_ALLOW();
 
+/*  fprintf(stderr,"Locking dbcon.\n"); */
   mt_lock( & dbcon->lock );
 
+/*  fprintf(stderr,"ocan.\n"); */
+
   ocan(&curs->cda);
 
   rc = oparse(&curs->cda, query->str, query->len, 1, 2);
@@ -618,6 +622,7 @@ static void f_big_query(INT32 args)
 
   THREADS_ALLOW();
 
+/*  fprintf(stderr,"oexec.\n"); */
   rc = oexec(&curs->cda);
 
   THREADS_DISALLOW();
@@ -640,6 +645,10 @@ static void f_big_query(INT32 args)
     curs->next = THIS->cdas;
     THIS->cdas = curs;
     push_int(0);
+
+    /* NIL */
+/*    fprintf(stderr,"NIL\n"); */
+    mt_unlock(&dbcon->lock);
     return;
   }
 
@@ -781,8 +790,10 @@ void pike_module_init(void)
 
   set_init_callback(init_dbresult_struct);
   set_exit_callback(exit_dbresult_struct);
+  
 
   oracle_result_program = end_program();
+  oracle_result_program->flags|=PROGRAM_DESTRUCT_IMMEDIATE;
 #endif
 }
 
-- 
GitLab