68 lines
868 B
C
68 lines
868 B
C
|
|
||
|
#include "pl-incl.h"
|
||
|
|
||
|
|
||
|
/********************************
|
||
|
* STRINGS *
|
||
|
*********************************/
|
||
|
|
||
|
|
||
|
#ifdef O_DEBUG
|
||
|
#define CHAR_INUSE 0x42
|
||
|
#define CHAR_FREED 0x41
|
||
|
|
||
|
char *
|
||
|
store_string(const char *s)
|
||
|
{ if ( s )
|
||
|
{ GET_LD
|
||
|
char *copy = (char *)allocHeap(strlen(s)+2);
|
||
|
|
||
|
*copy++ = CHAR_INUSE;
|
||
|
strcpy(copy, s);
|
||
|
|
||
|
return copy;
|
||
|
} else
|
||
|
{ return NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
remove_string(char *s)
|
||
|
{ if ( s )
|
||
|
{ GET_LD
|
||
|
assert(s[-1] == CHAR_INUSE);
|
||
|
|
||
|
s[-1] = CHAR_FREED;
|
||
|
freeHeap(s-1, strlen(s)+2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#else /*O_DEBUG*/
|
||
|
|
||
|
char *
|
||
|
store_string(const char *s)
|
||
|
{ if ( s )
|
||
|
{ GET_LD
|
||
|
|
||
|
char *copy = (char *)allocHeap(strlen(s)+1);
|
||
|
|
||
|
strcpy(copy, s);
|
||
|
return copy;
|
||
|
} else
|
||
|
{ return NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
remove_string(char *s)
|
||
|
{ if ( s )
|
||
|
{ GET_LD
|
||
|
freeHeap(s, strlen(s)+1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#endif /*O_DEBUG*/
|
||
|
|