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*/
 | ||
|  | 
 |