From 7b54eed2c2f512791698bb78d91254f2bb467e89 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?=
 <grubba@grubba.org>
Date: Fri, 16 Dec 2016 18:36:15 +0100
Subject: [PATCH] Strings: Backported STRING_CHECKED_MASK from Pike 8.1.

Get rid of magic numeric constant ~15 in string handling.
---
 src/stralloc.c | 4 ++--
 src/stralloc.h | 2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/stralloc.c b/src/stralloc.c
index 3235b071e8..4549a338bd 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -1697,7 +1697,7 @@ struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size,
 
   r=begin_wide_shared_string(size,shift);
   pike_string_cpy(MKPCHARP_STR(r),a);
-  r->flags |= (a->flags & ~15);
+  r->flags |= (a->flags & STRING_CHECKED_MASK);
   r->min = a->min;
   r->max = a->max;
   free_string(a);
@@ -1870,7 +1870,7 @@ PMOD_EXPORT void set_flags_for_add( struct pike_string *ret,
                                     struct pike_string *b)
 {
   if( !b->len ) {
-    ret->flags |= aflags & ~15;
+    ret->flags |= aflags & STRING_CHECKED_MASK;
     ret->min = amin;
     ret->max = amax;
     return;
diff --git a/src/stralloc.h b/src/stralloc.h
index 2992756468..34cddba72b 100644
--- a/src/stralloc.h
+++ b/src/stralloc.h
@@ -55,6 +55,8 @@ struct string_builder
 #define STRING_IS_LOWERCASE    32
 #define STRING_IS_UPPERCASE    64
 
+#define STRING_CHECKED_MASK (STRING_IS_UPPERCASE|STRING_IS_LOWERCASE|STRING_CONTENT_CHECKED)
+
 #define CLEAR_STRING_CHECKED(X) do{(X)->flags &= 15;}while(0)
 
 /* Flags used by string_builder_append_integer() */
-- 
GitLab