diff --git a/src/port.h b/src/port.h
index ec839a46157931de2f53a99216ce37edb552e3dc..275040707490c0e19d24fb30814f70c1090853b2 100644
--- a/src/port.h
+++ b/src/port.h
@@ -106,17 +106,6 @@ struct timeval;
 #define HAVE_ISSPACE 1
 #define ISSPACE(X) isspace(X)
 
-/* Warning, these run 'C' more than once */
-/* FIXME: Is it that great that every wide char is considered an
- * identifier char? Doesn't strike me as very unicode compliant.
- * isalnum, isdigit and islower also look seriously borken. /mast */
-#define WIDE_ISSPACE(C)	(((C) < 256)?isspace(C):0)
-#define WIDE_ISIDCHAR(C) (((C) < 256)?isidchar(C):1)
-#define WIDE_ISALNUM(C)	(((C) < 256)?isalnum(C):0)
-#define WIDE_ISDIGIT(C)	(((C) < 256)?isdigit(C):0)
-#define WIDE_ISLOWER(C)	(((C) < 256)?islower(C):0)
-
-
 #ifndef HAVE_GETTIMEOFDAY
 void GETTIMEOFDAY(struct timeval *t);
 #else
diff --git a/src/stralloc.h b/src/stralloc.h
index 2ddc9d7943de1f0a2a457d43d8649b3242793ace..a920e69c6ceba822137d7ea7b6657106cd65ccad 100644
--- a/src/stralloc.h
+++ b/src/stralloc.h
@@ -539,4 +539,14 @@ void low_f_sprintf(INT32 args, int compat_mode, struct string_builder *r);
 void init_sprintf(void);
 void exit_sprintf(void);
 
+/* Warning, these run 'C' more than once */
+/* FIXME: Is it that great that every wide char is considered an
+ * identifier char? Doesn't strike me as very unicode compliant.
+ * isalnum, isdigit and islower also look seriously borken. /mast */
+#define WIDE_ISSPACE(C)	(((C) < 256)?isspace(C):0)
+#define WIDE_ISIDCHAR(C) (((C) < 256)?isidchar(C):1)
+#define WIDE_ISALNUM(C)	(((C) < 256)?isalnum(C):0)
+#define WIDE_ISDIGIT(C)	(((C) < 256)?isdigit(C):0)
+#define WIDE_ISLOWER(C)	(((C) < 256)?islower(C):0)
+
 #endif /* STRALLOC_H */