The R Project SVN R

Rev

Rev 9184 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9184 Rev 10347
Line 18... Line 18...
18
   WITHOUT ANY WARRANTY.
18
   WITHOUT ANY WARRANTY.
19
 
19
 
20
   See the file COPYLIB.TXT for details.
20
   See the file COPYLIB.TXT for details.
21
*/
21
*/
22
 
22
 
23
/* Changes for R: use winmalloc etc not malloc (which does not free) */
-
 
24
 
-
 
25
#include <stdlib.h>
23
#include <stdlib.h>
26
#include "internal.h"
24
#include "internal.h"
27
 
25
 
28
#ifndef array
26
#ifndef array
29
 
27
 
Line 59... Line 57...
59
	  #if (COMPILER <= 16)
57
	  #if (COMPILER <= 16)
60
		if ((sizeof(long)+datasize) >= (1<<16))
58
		if ((sizeof(long)+datasize) >= (1<<16))
61
			return NULL;
59
			return NULL;
62
	  #endif
60
	  #endif
63
	#endif
61
	#endif
64
	block = (long *) winmalloc(sizeof(long) + datasize);
62
	block = (long *) malloc(sizeof(long) + datasize);
65
	if (block == NULL)
63
	if (block == NULL)
66
		return NULL;
64
		return NULL;
67
	block[0] = size;
65
	block[0] = size;
68
	a = (char *) & block[1];
66
	a = (char *) & block[1];
69
	for (i=0; i<datasize; i++)
67
	for (i=0; i<datasize; i++)
Line 98... Line 96...
98
		  #if (COMPILER <= 16)
96
		  #if (COMPILER <= 16)
99
			if ((sizeof(long)+newsize) >= (1<<16))
97
			if ((sizeof(long)+newsize) >= (1<<16))
100
				return NULL;
98
				return NULL;
101
		  #endif
99
		  #endif
102
		#endif
100
		#endif
103
		block = (long *) winrealloc(block, sizeof(long) + newsize);
101
		block = (long *) realloc(block, sizeof(long) + newsize);
104
		if (block == NULL)
102
		if (block == NULL)
105
			return NULL;
103
			return NULL;
106
		a = (char *) & block[1];
104
		a = (char *) & block[1];
107
		for (i=oldsize; i<newsize; i++)
105
		for (i=oldsize; i<newsize; i++)
108
			a[i] = '\0';
106
			a[i] = '\0';
Line 117... Line 115...
117
	return (a) ? ((long*)(a)-1)[0] : 0;
115
	return (a) ? ((long*)(a)-1)[0] : 0;
118
}
116
}
119
 
117
 
120
void memfree(char *a)
118
void memfree(char *a)
121
{
119
{
122
	if (a) winfree((long*)(a)-1);
120
	if (a) free((long*)(a)-1);
123
}
121
}
124
 
122
 
125
char * memexpand(char *a, long extra)
123
char * memexpand(char *a, long extra)
126
{
124
{
127
	long *block;
125
	long *block;
Line 147... Line 145...
147
		  #if (COMPILER <= 16)
145
		  #if (COMPILER <= 16)
148
			if ((sizeof(long)+newsize) >= (1<<16))
146
			if ((sizeof(long)+newsize) >= (1<<16))
149
				return NULL;
147
				return NULL;
150
		  #endif
148
		  #endif
151
		#endif
149
		#endif
152
		block = (long *) winrealloc(block, sizeof(long) + newsize);
150
		block = (long *) realloc(block, sizeof(long) + newsize);
153
		if (block == NULL)
151
		if (block == NULL)
154
			return NULL;
152
			return NULL;
155
		a = (char *) & block[1];
153
		a = (char *) & block[1];
156
		for (i=oldsize; i<newsize; i++)
154
		for (i=oldsize; i<newsize; i++)
157
			a[i] = '\0';
155
			a[i] = '\0';