[Python-checkins] r46094 - python/trunk/Include/unicodeobject.h

fredrik.lundh python-checkins at python.org
Tue May 23 12:10:57 CEST 2006


Author: fredrik.lundh
Date: Tue May 23 12:10:57 2006
New Revision: 46094

Modified:
   python/trunk/Include/unicodeobject.h
Log:
needforspeed: check first *and* last character before doing a full memcmp



Modified: python/trunk/Include/unicodeobject.h
==============================================================================
--- python/trunk/Include/unicodeobject.h	(original)
+++ python/trunk/Include/unicodeobject.h	Tue May 23 12:10:57 2006
@@ -367,10 +367,12 @@
         for (i_ = 0; i_ < (length); i_++) t_[i_] = v_;\
     } while (0)
 
-#define Py_UNICODE_MATCH(string, offset, substring)\
-    ((*((string)->str + (offset)) == *((substring)->str)) &&\
-     !memcmp((string)->str + (offset), (substring)->str,\
-             (substring)->length*sizeof(Py_UNICODE)))
+/* check if substring matches at given offset.  the offset must be
+   valid, and the substring must not be empty */
+#define Py_UNICODE_MATCH(string, offset, substring) \
+    ((*((string)->str + (offset)) == *((substring)->str)) && \
+    ((*((string)->str + (offset) + (substring)->length-1) == *((substring)->str + (substring)->length-1))) && \
+     !memcmp((string)->str + (offset), (substring)->str, (substring)->length*sizeof(Py_UNICODE)))
 
 #ifdef __cplusplus
 extern "C" {


More information about the Python-checkins mailing list