diff --git a/src/stralloc.h b/src/stralloc.h index b7faffdde6a5c3f27dee4d07286ddddbe19a4ef2..c27e3a3372e825ff5174c33f13b58a2c19aec22c 100644 --- a/src/stralloc.h +++ b/src/stralloc.h @@ -36,6 +36,7 @@ struct pike_string *debug_findstring(const struct pike_string *foo); #define reference_shared_string(s) do { struct pike_string *S_=(s); debug_malloc_touch(S_); S_->refs++; }while(0) #define copy_shared_string(to,s) do { struct pike_string *S_=(to)=(s); debug_malloc_touch(S_); S_->refs++; }while(0) + #else #define reference_shared_string(s) (s)->refs++ @@ -44,6 +45,11 @@ struct pike_string *debug_findstring(const struct pike_string *foo); #endif +#define MAKE_CONSTANT_SHARED_STRING(var, text) \ + do { static struct pike_string *str_; \ + if(!str_) str_=make_shared_string((text)); \ + copy_shared_string((var), str_); \ + }while(0) /* Prototypes begin here */ struct pike_string *binary_findstring(const char *foo, INT32 l);