Fixed bug #203, rank-1 crashed with isam-c
authorHeikki Levanto <heikki@indexdata.dk>
Wed, 3 Nov 2004 16:04:45 +0000 (16:04 +0000)
committerHeikki Levanto <heikki@indexdata.dk>
Wed, 3 Nov 2004 16:04:45 +0000 (16:04 +0000)
The fix was to add a TERMID to rstemp, then everything works fine.

include/rset.h
index/trunc.c
index/zrpn.c
rset/rstemp.c

index 0fc191f..f9ef08b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: rset.h,v 1.41 2004-10-22 11:33:28 heikki Exp $
+/* $Id: rset.h,v 1.42 2004-11-03 16:04:45 heikki Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
    Index Data Aps
 
@@ -216,7 +216,7 @@ zint rset_count(RSET rs);
 
 RSET rstemp_create( NMEM nmem, const struct key_control *kcontrol,
                     int scope, 
-                    const char *temp_path);
+                    const char *temp_path, TERMID term);
 
 RSET rsnull_create(NMEM nmem, const struct key_control *kcontrol);
 
index 893e1c0..0b6f12d 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: trunc.c,v 1.47 2004-10-20 14:32:28 heikki Exp $
+/* $Id: trunc.c,v 1.48 2004-11-03 16:04:45 heikki Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -127,7 +127,8 @@ static RSET rset_trunc_r (ZebraHandle zi, const char *term, int length,
                           const char *flags, ISAMS_P *isam_p, int from, int to,
                           int merge_chunk, int preserve_position,
                           int term_type, NMEM rset_nmem,
-                          const struct key_control *kctrl, int scope)
+                          const struct key_control *kctrl, int scope,
+                          TERMID termid)
 {
     RSET result; 
     RSFD result_rsfd;
@@ -141,7 +142,7 @@ static RSET rset_trunc_r (ZebraHandle zi, const char *term, int length,
     result = rset_create (rset_kind_temp, &parms);
     */
     result=rstemp_create( rset_nmem,kctrl, scope,
-            res_get (zi->res, "setTmpDir"));
+            res_get (zi->res, "setTmpDir"), termid);
     result_rsfd = rset_open (result, RSETF_WRITE);
 
     if (to - from > merge_chunk)
@@ -163,13 +164,13 @@ static RSET rset_trunc_r (ZebraHandle zi, const char *term, int length,
                                            isam_p, i, i+i_add,
                                             merge_chunk, preserve_position,
                                             term_type, rset_nmem, 
-                                            kctrl, scope);
+                                            kctrl, scope,termid);
             else
                 rset[rscur] = rset_trunc_r (zi, term, length, flags,
                                             isam_p, i, to,
                                             merge_chunk, preserve_position,
                                             term_type, rset_nmem, 
-                                            kctrl, scope);
+                                            kctrl, scope,termid);
             rscur++;
         }
         ti = heap_init (rscur, sizeof(struct it_key), key_compare_it);
@@ -451,6 +452,7 @@ RSET rset_trunc (ZebraHandle zi, ISAMS_P *isam_p, int no,
        return rsnull_create (rset_nmem, kctrl);
     }
     return rset_trunc_r (zi, term, length, flags, isam_p, 0, no, 100,
-                         preserve_position, term_type, rset_nmem,kctrl,scope);
+                         preserve_position, term_type, rset_nmem,kctrl,scope,
+                         termid);
 }
 
index c185b95..9de1921 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: zrpn.c,v 1.158 2004-10-26 15:32:11 heikki Exp $
+/* $Id: zrpn.c,v 1.159 2004-11-03 16:04:45 heikki Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
@@ -1739,7 +1739,7 @@ static RSET rpn_search_APT_local (ZebraHandle zh, Z_AttributesPlusTerm *zapt,
     struct it_key key;
     int sys;
     result = rstemp_create( rset_nmem,key_it_ctrl,key_it_ctrl->scope,
-                     res_get (zh->res, "setTmpDir") );
+                     res_get (zh->res, "setTmpDir"),0 );
     rsfd = rset_open (result, RSETF_WRITE);
 
     sys = atoi(termz);
index 621addf..29d4ffc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: rstemp.c,v 1.52 2004-10-22 10:12:52 heikki Exp $
+/* $Id: rstemp.c,v 1.53 2004-11-03 16:04:46 heikki Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
    Index Data Aps
 
@@ -48,7 +48,7 @@ static const struct rset_control control =
 {
     "temp",
     r_delete,
-    rset_get_no_terms,
+    rset_get_one_term,
     r_open,
     r_close,
     rset_default_forward,
@@ -81,9 +81,9 @@ struct rset_temp_rfd {
 
 RSET rstemp_create( NMEM nmem, const struct key_control *kcontrol,
                     int scope, 
-                    const char *temp_path)
+                    const char *temp_path,TERMID term)
 {
-    RSET rnew=rset_create_base(&control, nmem, kcontrol, scope,0);
+    RSET rnew=rset_create_base(&control, nmem, kcontrol, scope,term);
     struct rset_temp_info *info;
    
     info = (struct rset_temp_info *) nmem_malloc(rnew->nmem, sizeof(*info));