Re: namazu returns references, but no matching documents

[email protected] Wed, 26 Nov 2003 18:53:52 +0900
Newsgroups gmane.comp.search.namazu.user
Message-ID <[email protected]>
--Multipart_Wed_Nov_26_18:53:52_2003-1
Content-Type: text/plain; charset=US-ASCII

At Wed, 26 Nov 2003 18:47:14 +0900,
[email protected] wrote:
> According to gdb, it's in the following line that the reason why
> namazu couldn't work appropriately:
> 
>             val = nmz_do_searching(token, val);
> 
> (nmz/parser.c: factor())
> 
> val is an structure (NmzResult). In nmz_do_searching() function, the
> value of val seems handled appropriately, but the return value was not
> effected, therefore val.num is still 0 after the line.

I maed a patch for the issue. But 2 tests were still failed.
-- 
NOKUBI Takatsugu
E-mail: [email protected]
	[email protected] / [email protected]

--Multipart_Wed_Nov_26_18:53:52_2003-1
Content-Type: application/octet-stream; type=patch
Content-Disposition: attachment; filename="openbsd33-workaround.diff"
Content-Transfer-Encoding: 7bit

diff -ur namazu-2.0.12/nmz/parser.c namazu-2.0.12.new/nmz/parser.c
--- namazu-2.0.12/nmz/parser.c	Tue Sep 11 16:59:39 2001
+++ namazu-2.0.12.new/nmz/parser.c	Wed Nov 26 10:26:23 2003
@@ -65,7 +65,7 @@
 static NmzResult 
 factor(void)
 {
-    NmzResult val;
+    static NmzResult val;
     val.num  = 0;
     val.stat = SUCCESS;
     while (1) {
@@ -91,7 +91,7 @@
                 Cp++;
             break;
         } else if (!nmz_is_query_op(token)) {
-            val = nmz_do_searching(token, val);
+            val = nmz_do_searching(token, &val);
 	    if (val.stat == ERR_FATAL)
 	       return val;
             if (val.stat == ERR_TOO_MUCH_MATCH ||
diff -ur namazu-2.0.12/nmz/search.c namazu-2.0.12.new/nmz/search.c
--- namazu-2.0.12/nmz/search.c	Tue Mar 26 19:49:33 2002
+++ namazu-2.0.12.new/nmz/search.c	Wed Nov 26 10:26:12 2003
@@ -1032,10 +1032,12 @@
 
 
 NmzResult 
-nmz_do_searching(const char *key, NmzResult val)
+nmz_do_searching(const char *key, NmzResult *val2)
 {
     enum nmz_searchmethod mode;
     char tmpkey[BUFSIZE];
+	NmzResult val;
+    memcpy(&val, val2, sizeof(val));
 
     strncpy(tmpkey, key, BUFSIZE - 1);
 
diff -ur namazu-2.0.12/nmz/search.h namazu-2.0.12.new/nmz/search.h
--- namazu-2.0.12/nmz/search.h	Mon Feb 26 17:39:52 2001
+++ namazu-2.0.12.new/nmz/search.h	Wed Nov 26 10:27:13 2003
@@ -6,7 +6,7 @@
 extern void nmz_free_hitnums ( struct nmz_hitnumlist *hn );
 extern int nmz_binsearch ( const char *key, int prefix_match_mode );
 extern NmzResult nmz_search ( const char *query );
-extern NmzResult nmz_do_searching ( const char *key, NmzResult val );
+extern NmzResult nmz_do_searching ( const char *key, NmzResult *val );
 
 #endif /* _SEARCH_H */
 

--Multipart_Wed_Nov_26_18:53:52_2003-1--