IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 9, 2017, 12:47:22 PM (9 years ago)
Author:
eugene
Message:

mostly harmless changes to track down dvopsps segfaults: watch out for Bzero,Bscale in F_set_column.c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20170809/src/libfits/table/F_set_column.c

    r39993 r40113  
    11# include <ohana.h>
    22# include <gfitsio.h>
    3 # define OHANA_MEMCHECK 0
    4 # define CHECK_MEMBLOCKS 0
     3# define OHANA_MEMCHECK 1
     4# define CHECK_MEMBLOCKS 1
    55
    66# define SWAP_NONE
     
    3333  int Nval, Nbytes, Nstart, Nv, Nb;
    3434  char tlabel[256], field[256], format[256], type[64], tmpline[64];
    35   char *Pin, *Pout, *array;
     35  char *Pin, *Pout;
    3636  double Bscale, Bzero;
    3737
     
    5353# endif
    5454
     55  // fprintf (stderr, "Pin: 0x%08lx, Pout: 0x%08lx, array: 0x%08lx\n", (long int) &Pin, (long int) &Pout, (long int) &array);
     56
    5557  if (label == (char *) NULL) return (FALSE);
    5658  if (label[0] == 0) return (FALSE);
     
    6769
    6870  /* interpret format */
     71# if (0)
    6972  snprintf (field, 256, "TSCAL%d", N);
    7073  if (!gfits_scan (header, field, "%lf", 1, &Bscale)) {
     
    7578    Bzero = 0.0;
    7679  }
     80# else
     81    Bscale = 1.0;
     82    Bzero = 0.0;
     83# endif 
     84
    7785  snprintf (field, 256, "TFORM%d", N);
    7886  if (!gfits_scan (header, field, "%s", 1, format)) return FALSE;
     
    107115  /* make duplicate of data with correct type
    108116     byte swap and Bzero/Bscale */
    109   ALLOCATE (array, char, Nbytes*Nval*Nrow);
     117  ALLOCATE_PTR (array, char, Nbytes*Nval*Nrow);
    110118  if (CHECK_MEMBLOCKS) {
    111119    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
    112     fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
     120    // fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
    113121    if (!ref->nextBlock && !ref->prevBlock) abort();
     122    if (!ref->size) abort();
    114123  }
    115124
     
    121130  if (CHECK_MEMBLOCKS) {
    122131    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
    123     fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
     132    // fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
    124133    if (!ref->nextBlock && !ref->prevBlock) abort();
    125134  }
     
    213222  if (CHECK_MEMBLOCKS) {
    214223    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
    215     fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
     224    // fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
    216225    if (!ref->nextBlock && !ref->prevBlock) abort();
    217226  }
     
    242251  if (CHECK_MEMBLOCKS) {
    243252    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
    244     fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
     253    // fprintf (stderr, "ref: 0x%08lx, array: 0x%08lx, size: %zd, (%s@%d : %s), freed: %1d, Nalloc: %d\n", (long int) ref, (long int) array, ref->size, ref->file, ref->line, ref->func, ref->freed, ref->Nalloc);
    245254    if (!ref->nextBlock && !ref->prevBlock) abort();
    246255  }
Note: See TracChangeset for help on using the changeset viewer.