Fix issue with long lines with comments in lsearch. fixes: #894
[exim.git] / src / src / lookups / lsearch.c
index 4b3c7e23353bc7de6120e5d63d949a3ae941ad71..ba2c673fadfc9c558e3af936b080f90c91b3da4b 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/lookups/lsearch.c,v 1.8 2007/01/08 10:50:19 ph10 Exp $ */
+/* $Cambridge: exim/src/src/lookups/lsearch.c,v 1.9 2009/10/14 13:43:40 nm4 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -107,6 +107,7 @@ for (last_was_eol = TRUE;
   int ptr, size;
   int p = Ustrlen(buffer);
   int linekeylength;
   int ptr, size;
   int p = Ustrlen(buffer);
   int linekeylength;
+  BOOL this_is_comment;
   uschar *yield;
   uschar *s = buffer;
 
   uschar *yield;
   uschar *s = buffer;
 
@@ -255,6 +256,7 @@ for (last_was_eol = TRUE;
 
   Initialize, and copy the first segment of data. */
 
 
   Initialize, and copy the first segment of data. */
 
+  this_is_comment = FALSE;
   size = 100;
   ptr = 0;
   yield = store_get(size);
   size = 100;
   ptr = 0;
   yield = store_get(size);
@@ -285,11 +287,13 @@ for (last_was_eol = TRUE;
 
     if (last_was_eol)
       {
 
     if (last_was_eol)
       {
-      if (buffer[0] == 0 || buffer[0] == '#') continue;
+      this_is_comment ||= (buffer[0] == 0 || buffer[0] == '#');
+      if (this_is_comment) continue;
       if (!isspace((uschar)buffer[0])) break;
       while (isspace((uschar)*s)) s++;
       *(--s) = ' ';
       }
       if (!isspace((uschar)buffer[0])) break;
       while (isspace((uschar)*s)) s++;
       *(--s) = ' ';
       }
+    if (this_is_comment) continue;
 
     /* Join a physical or logical line continuation onto the result string. */
 
 
     /* Join a physical or logical line continuation onto the result string. */