Exemple #1
0
SLFUTURE_VOID *SLdebug_realloc (SLFUTURE_VOID *p, unsigned long n)
{
   if (-1 == check_memory ((unsigned char *) p, "REALLOC")) return NULL;
   if ((p = (char *) SLREALLOC ((char*)p - Chunk, n + 2 * Chunk)) == NULL) return NULL;
   fixup ((unsigned char *) p, n, "REALLOC");
   return (SLFUTURE_VOID *) ((char*)p + Chunk);
}
Exemple #2
0
void *_JDMrealloc (void *s, unsigned int len)
{
   if (s == NULL)
     return _JDMmalloc (len, "realloc");

   s = (char *)SLREALLOC (s, len);
   if (s == NULL)
     JDMath_Error = JDMATH_MALLOC_ERROR;

   return s;
}
Exemple #3
0
int JDMread_column_fdata (char *file, float **data, int *cindex, unsigned int n, unsigned int *num_read)
{
   char buf[512];
   unsigned int space = 1024;
   unsigned int nread = 0;
   int do_close;
   unsigned int i;
#define MAX_COLUMNS 20
   float dum[MAX_COLUMNS];
   FILE *fp;

   *num_read = 0;
   if (n > MAX_COLUMNS)
     {
	JDMath_Error = JDMATH_INVALID_PARAMETER;
	JDMmsg_error ("JDMread_column_fdata");
	return -1;
     }

   if (file == NULL)
     {
	fp = stdin;
	do_close = 0;
	file = "<stdin>";
     }
   else
     {
	if (NULL == (fp = fopen (file, "r")))
	  {
	     JDMath_Error = JDMATH_FILE_OPEN_ERROR;
	     JDMmsg_error2 ("JDMread_column_fdata", file);
	     return -1;
	  }
	do_close = 1;
     }

   /* initialize everything to NULL */
   for (i = 0; i < n; i++) data[i] = NULL;

   for (i = 0; i < n; i++)
     {
	float *ptr;
	if (cindex[i] == 0) continue;
	ptr = (float *) SLMALLOC (space * sizeof (float));
	if (ptr == NULL) goto return_error;
	data[i] = ptr;
     }

   while (NULL != fgets (buf, sizeof (buf) - 1, fp))
     {
	if ((int)n > sscanf (buf, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f",
			dum+0, dum+1, dum+2, dum+3, dum+4,
			dum+5, dum+6, dum+7, dum+8, dum+9,
			dum+10, dum+11, dum+12, dum+13, dum+14,
			dum+15, dum+16, dum+17, dum+18, dum+19
			))
	  continue;

	if (nread == space)
	  {
	     space += 1024;
	     for (i = 0; i < n; i++)
	       {
		  float *ptr;
		  if (cindex[i] == 0) continue;
		  ptr = (float *) SLREALLOC (data[i], space * sizeof (float));
		  if (ptr == NULL) goto return_error;
		  data[i] = ptr;
	       }
	  }

	for (i = 0; i < n; i++)
	  {
	     if (cindex[i] == 0) continue;
	     data[i][nread] = dum[i];
	  }

	nread++;
     }

   if (nread == 0)
     {
	JDMath_Error = JDMATH_CORRUPT_FILE_ERROR;
	JDMmsg_error2 ("JDMread_column_fdata", file);
	goto read_error;
     }

   if (file != NULL) fclose (fp);
   *num_read = nread;
   return 0;

   return_error:
   JDMath_Error = JDMATH_MALLOC_ERROR;

   read_error:

   if (do_close) fclose (fp);

   JDMmsg_error2 ("JDMread_column_fdata", file);

   for (i = 0; i < n; i++)
     {
	if (data[i] != NULL) SLFREE (data[i]);
     }
   return -1;
}