From 1bc467f1a480963449f0259dee1c352f186e7a05 Mon Sep 17 00:00:00 2001 From: Dimitri Fontaine Date: Thu, 16 Oct 2014 13:55:46 +0200 Subject: [PATCH] TIL how to avoid ignore-errors. --- src/utils/transforms.lisp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/utils/transforms.lisp b/src/utils/transforms.lisp index ee3be9d..e11710c 100644 --- a/src/utils/transforms.lisp +++ b/src/utils/transforms.lisp @@ -195,6 +195,16 @@ (setf (aref bytea (+ pos 1)) (aref hex-digits low))) finally (return bytea))))) +(defun ensure-parse-integer (string-or-integer) + "Return an integer value if string-or-integer is an integer or a string + containing only an integer value, in all other cases return nil." + (typecase string-or-integer + (string (multiple-value-bind (integer position) + (parse-integer string-or-integer :junk-allowed t) + (when (= (length string-or-integer) position) + integer))) + (integer string-or-integer))) + (defun sqlite-timestamp-to-timestamp (date-string-or-integer) (declare (type (or integer simple-string) date-string-or-integer)) (when date-string-or-integer @@ -208,8 +218,7 @@ ((stringp date-string-or-integer) ;; default values are sent as strings - (let ((maybe-integer - (ignore-errors (parse-integer date-string-or-integer)))) + (let ((maybe-integer (ensure-parse-integer date-string-or-integer))) (cond ((and maybe-integer (= 0 maybe-integer)) nil)