[Gnucash-changes] r14354 - gnucash/trunk/src/import-export/qif-import - Don't crash when parsing empty string as date. Fixes #344466.

Chris Shoemaker chris at cvs.gnucash.org
Mon Jun 12 20:35:47 EDT 2006


Author: chris
Date: 2006-06-12 20:35:47 -0400 (Mon, 12 Jun 2006)
New Revision: 14354
Trac: http://svn.gnucash.org/trac/changeset/14354

Modified:
   gnucash/trunk/src/import-export/qif-import/qif-parse.scm
Log:
   Don't crash when parsing empty string as date.  Fixes #344466.


Modified: gnucash/trunk/src/import-export/qif-import/qif-parse.scm
===================================================================
--- gnucash/trunk/src/import-export/qif-import/qif-parse.scm	2006-06-13 00:14:26 UTC (rev 14353)
+++ gnucash/trunk/src/import-export/qif-import/qif-parse.scm	2006-06-13 00:35:47 UTC (rev 14354)
@@ -429,25 +429,26 @@
         (numeric-date-parts '())
         (retval date-string)
         (match (regexp-exec qif-date-compiled-rexp date-string)))
-    (if (match:substring match 1)
-        (set! date-parts (list (match:substring match 1)
-                               (match:substring match 2)
-                               (match:substring match 3)))
-	;; This is of the form XXXXXXXX; split the string based on
-	;; whether the format is YYYYxxxx or xxxxYYYY
-	(let ((date-str (match:substring match 4)))
-	  (case format
-	    ((d-m-y m-d-y)
-	     (let ((m (regexp-exec qif-date-mdy-compiled-rexp date-str)))
-	       (set! date-parts (list (match:substring m 1)
-				      (match:substring m 2)
-				      (match:substring m 3)))))
-	  ((y-m-d y-d-m)
-	     (let ((m (regexp-exec qif-date-ymd-compiled-rexp date-str)))
-	       (set! date-parts (list (match:substring m 1)
-				      (match:substring m 2)
-				      (match:substring m 3)))))
-	  )))
+    (if match
+        (if (match:substring match 1)
+             (set! date-parts (list (match:substring match 1)
+                                    (match:substring match 2)
+                                    (match:substring match 3)))
+             ;; This is of the form XXXXXXXX; split the string based on
+             ;; whether the format is YYYYxxxx or xxxxYYYY
+             (let ((date-str (match:substring match 4)))
+               (case format
+                 ((d-m-y m-d-y)
+                  (let ((m (regexp-exec qif-date-mdy-compiled-rexp date-str)))
+                    (set! date-parts (list (match:substring m 1)
+                                           (match:substring m 2)
+                                           (match:substring m 3)))))
+                 ((y-m-d y-d-m)
+                  (let ((m (regexp-exec qif-date-ymd-compiled-rexp date-str)))
+                    (set! date-parts (list (match:substring m 1)
+                                           (match:substring m 2)
+                                           (match:substring m 3)))))
+                 ))))
 	
     ;; get the strings into numbers (but keep the strings around)
     (set! numeric-date-parts



More information about the gnucash-changes mailing list