Index: /Search-Namazu/branches/0.96/Search-Namazu/Namazu.xs
===================================================================
--- /Search-Namazu/branches/0.96/Search-Namazu/Namazu.xs	(revision 264)
+++ /Search-Namazu/branches/0.96/Search-Namazu/Namazu.xs	(revision 268)
@@ -196,4 +196,5 @@
 	PPCODE:
 		char *qstr;
+                char buffer[BUFSIZE];
 		char cqstr[BUFSIZE * 2];
 		AV *retar;
@@ -201,15 +202,16 @@
 
 		qstr = SvPV(query, PL_na);
-		nmz_codeconv_query(qstr);
-		strcpy(cqstr, qstr);
+                strncpy(buffer, qstr, BUFSIZE);
+                buffer[BUFSIZE - 1] = '\0';
+		nmz_codeconv_query(buffer);
+		strcpy(cqstr, buffer);
 		retar = call_search_main_c(cqstr, maxget);
 #if ! defined(PERL_VERSION) || (PERL_VERSION == 6 && PERL_SUBVERSION == 0)
 		{ /* workaround for only one result */
-			SV *ohlist = perl_eval_pv("new Search::Namazu::Result", TRUE);
-			XPUSHs(ohlist);
+                        SPAGAIN;
 		}
 #endif /* PERL_VERSION */
 		while (av_len(retar) >= 0) {
-			XPUSHs(av_pop(retar));
+			XPUSHs(av_shift(retar));
 		}
 		nmz_free_internal();
@@ -222,4 +224,5 @@
 	CODE:
 		char *qstr;
+                char buffer[BUFSIZE];
 		char cqstr[BUFSIZE * 2];
 		AV *retar;
@@ -227,6 +230,8 @@
 
 		qstr = SvPV(query, PL_na);
-		nmz_codeconv_query(qstr);
-		strcpy(cqstr, qstr);
+                strncpy(buffer, qstr, BUFSIZE);
+                buffer[BUFSIZE - 1] = '\0';
+                nmz_codeconv_query(buffer);
+                strcpy(cqstr, buffer);
 		retar = call_search_main_c(cqstr, maxget);
 		nmz_free_internal();
@@ -243,4 +248,5 @@
 	CODE:
 		char *qstr;
+                char buffer[BUFSIZE];
 		char cqstr[BUFSIZE * 2];
 		AV *retar;
@@ -250,6 +256,8 @@
 		fields = (AV *) SvRV(fieldref);
 		qstr = SvPV(query, PL_na);
-		nmz_codeconv_query(qstr);
-		strcpy(cqstr, qstr);
+                strncpy(buffer, qstr, BUFSIZE);
+                buffer[BUFSIZE - 1] = '\0';
+                nmz_codeconv_query(buffer);
+                strcpy(cqstr, buffer);
 		retar = call_search_main_fields_c(cqstr, maxget, fields);
 		nmz_free_internal();
Index: /Search-Namazu/branches/0.96/Search-Namazu/ChangeLog
===================================================================
--- /Search-Namazu/branches/0.96/Search-Namazu/ChangeLog	(revision 264)
+++ /Search-Namazu/branches/0.96/Search-Namazu/ChangeLog	(revision 268)
@@ -1,2 +1,7 @@
+2006-06-09  NOKUBI Takatsugu  <knok@daionet.gr.jp>
+
+	* Namazu.xs: Fixed segfault bug on perl 5.005_03.
+	  (Patched by Tadamasa Teranishi, thank you)
+
 2006-06-06  NOKUBI Takatsugu  <knok@daionet.gr.jp>
 
