Fix uninit variable (hits_limit)
[idzebra-moved-to-github.git] / index / rpnsearch.c
index 5fa197f..872cf8b 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the Zebra server.
-   Copyright (C) 1994-2010 Index Data
+   Copyright (C) 1994-2011 Index Data
 
 Zebra is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -17,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 */
 
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <stdio.h>
 #include <assert.h>
 #ifdef WIN32
@@ -430,7 +433,7 @@ static int term_102(zebra_map_t zm, const char **src,
 }
 
 
-/* term_104: handle term, process # and ! */
+/* term_104: handle term, process ?n * # */
 static int term_104(zebra_map_t zm, const char **src, 
                     WRBUF term_dict, int space_split, WRBUF display_term)
 {
@@ -499,7 +502,7 @@ static int term_104(zebra_map_t zm, const char **src,
     return i;
 }
 
-/* term_105/106: handle term, where trunc = Process * and ! and right trunc */
+/* term_105/106: handle term, process * ! and possibly right_truncate */
 static int term_105(zebra_map_t zm, const char **src, 
                     WRBUF term_dict, int space_split,
                    WRBUF display_term, int right_truncate)
@@ -1144,7 +1147,7 @@ static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
             }
             wrbuf_putc(term_dict, ')');
             break;
-        case 104:        /* process # and ! in term */
+        case 104:        /* process ?n * # term */
             wrbuf_putc(term_dict, '(');
             if (!term_104(zm, &termp, term_dict, space_split, display_term))
             {
@@ -1153,7 +1156,7 @@ static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
             }
             wrbuf_putc(term_dict, ')');
             break;
-        case 105:        /* process * and ! in term */
+        case 105:        /* process * ! in term and right truncate */
             wrbuf_putc(term_dict, '(');
             if (!term_105(zm, &termp, term_dict, space_split, display_term, 1))
             {
@@ -1162,7 +1165,7 @@ static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
             }
             wrbuf_putc(term_dict, ')');
             break;
-        case 106:        /* process * and ! in term */
+        case 106:        /* process * ! in term */
             wrbuf_putc(term_dict, '(');
             if (!term_105(zm, &termp, term_dict, space_split, display_term, 0))
             {
@@ -1808,6 +1811,7 @@ static ZEBRA_RES rpn_search_APT_numeric(ZebraHandle zh,
                                        Z_AttributesPlusTerm *zapt,
                                        const char *termz,
                                        const Odr_oid *attributeSet,
+                                        zint hits_limit,
                                        NMEM stream,
                                        const char *index_type, 
                                         int complete_flag,
@@ -1823,7 +1827,7 @@ static ZEBRA_RES rpn_search_APT_numeric(ZebraHandle zh,
     ZEBRA_RES res;
     struct grep_info grep_info;
     int alloc_sets = 0;
-    zint hits_limit_value;
+    zint hits_limit_value = hits_limit;
     const char *term_ref_id_str = 0;
 
     zebra_term_limits_APT(zh, zapt, &hits_limit_value, &term_ref_id_str,
@@ -2380,7 +2384,8 @@ static ZEBRA_RES rpn_search_database(ZebraHandle zh,
     }
     else if (!strcmp(search_type, "numeric"))
     {
-        res = rpn_search_APT_numeric(zh, zapt, termz, attributeSet, stream,
+        res = rpn_search_APT_numeric(zh, zapt, termz, attributeSet, hits_limit,
+                                     stream,
                                     index_type, complete_flag, rank_type,
                                     xpath_use,
                                     rset_nmem,