diff --git a/src/cpp.c b/src/cpp.c
index d2455504c31a589eec9746751652eef684f269e5..56a29c2ba21246f014aab0dc6db94d39d53e6ba8 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -1284,9 +1284,14 @@ static INT32 low_cpp(struct cpp *this,
 
 	  while(isidchar(data[pos])) pos++;
 
+	  /* #undef some_long_identifier
+	   *        ^                   ^
+	   *        tmp               pos
+	   */
+
 	  if(OUTP())
 	  {
-	    if((s=binary_findstring(data+pos, pos-tmp)))
+	    if((s=binary_findstring(data+tmp, pos-tmp)))
 	      undefine(this,s);
 	  }