Use two different string-escape functions
[jscl.git] / src / string.lisp
index aebad3a..8bead9b 100644 (file)
@@ -19,7 +19,9 @@
         (t (char-to-string x))))
 
 (defun string= (s1 s2)
-  (let ((n (length s1)))
+  (let* ((s1 (string s1))
+         (s2 (string s2))
+         (n (length s1)))
     (when (= (length s2) n)
       (dotimes (i n t)
         (unless (char= (char s1 i) (char s2 i))
 
 (defun string< (s1 s2)
   (let ((len-1 (length s1))
-               (len-2 (length s2)))
-       (cond ((= len-2 0) nil)
-                 ((= len-1 0) 0)
-                 (t (dotimes (i len-1 nil)
-                          (when (char< (char s1 i) (char s2 i))
-                                (return-from string< i)))))))
-               
+        (len-2 (length s2)))
+    (cond ((= len-2 0) nil)
+          ((= len-1 0) 0)
+          (t (dotimes (i len-1 nil)
+               (when (char< (char s1 i) (char s2 i))
+                 (return-from string< i))
+               (when (and (= i (1- len-1)) (> len-2 len-1))
+                 (return-from string< (1+ i))))))))
+
+(defun stringp (s)
+  (stringp s))
+
 (define-setf-expander char (string index)
   (let ((g!string (gensym))
         (g!index (gensym))