summaryrefslogtreecommitdiff
path: root/plugins/shn/array.c
blob: 0adf8549a1f2dded46a3c0f343119ebfafa3575c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/******************************************************************************
*                                                                             *
*  Copyright (C) 1992-1995 Tony Robinson                                      *
*                                                                             *
*  See the file doc/LICENSE.shorten for conditions on distribution and usage  *
*                                                                             *
******************************************************************************/

/*
 * $Id: array.c,v 1.7 2003/08/26 05:34:04 jason Exp $
 */

#include <stdio.h>
#include <stdlib.h>
#include "shorten.h"
#include "shn.h"

void *pmalloc(ulong size, shn_file *this_shn) {
  void *ptr;

  ptr = malloc(size);

  if(ptr == NULL)
    shn_error_fatal(this_shn,"Call to malloc(%ld) failed in pmalloc() -\nyour system may be low on memory", size);

  return(ptr);
}

slong **long2d(ulong n0, ulong n1, shn_file *this_shn) {
  slong **array0 = NULL;

  if((array0 = (slong**) pmalloc((ulong) (n0 * sizeof(slong*) +
					 n0 * n1 * sizeof(slong)),this_shn)) != NULL ) {
    slong *array1 = (slong*) (array0 + n0);
    int i;

    for(i = 0; i < n0; i++)
      array0[i] = array1 + i * n1;
  }
  return(array0);
}