IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 7, 2006, 3:03:35 PM (20 years ago)
Author:
desonia
Message:

fixed a leak in psFits table reading and cleaned up things according to
the API Delta report.

-rdd
`

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/fits/psFitsTable.c

    r6314 r6354  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2006-02-03 00:11:58 $
     9 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2006-02-08 01:03:34 $
    1111 *
    1212 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2323#include "psTrace.h"
    2424#include "psVector.h"
     25#include "config.h"
    2526
    2627#define MAX_STRING_LENGTH 256  // maximum length string for FITS routines
     
    309310        if (status == 0) {
    310311
    311             #define READ_TABLE_ROW_CASE(FITSTYPE, NATIVETYPE, TYPE) \
     312            #define READ_TABLE_ROW_CASE(FITSTYPE, NATIVETYPE, TYPE, VECTYPE) \
    312313        case FITSTYPE: { \
    313314                if (repeat == 1) { \
     
    322323                                  "", (ps##TYPE)value); \
    323324                } else { \
    324                     psVector* value = psVectorAlloc(repeat,PS_DATA_##TYPE); \
     325                    NATIVETYPE* value = psAlloc(sizeof(NATIVETYPE)*repeat); \
     326                    psVector* vec = psVectorAlloc(repeat,PS_TYPE_##VECTYPE); \
    325327                    int anynul = 0; \
    326328                    fits_read_col(fits->fd, FITSTYPE, col,row+1, \
    327                                   1, repeat, NULL, value->data.U8, &anynul, &status); \
    328                     psMetadataAdd(data,PS_LIST_TAIL, name, \
    329                                   PS_DATA_VECTOR, \
    330                                   "", value); \
     329                                  1, repeat, NULL, value, &anynul, &status); \
     330                    for (int lcv = 0; lcv < repeat; lcv++) { \
     331                        vec->data.VECTYPE[lcv] = value[lcv]; \
     332                    } \
     333                    psMetadataAdd(data,PS_LIST_TAIL, name, PS_DATA_VECTOR, "", vec); \
    331334                    psFree(value); \
     335                    psFree(vec); \
    332336                } \
    333337                break; \
     
    338342            case TSHORT:
    339343            case TLONGLONG:
    340                 READ_TABLE_ROW_CASE(TLONG, long, S32)
    341                 READ_TABLE_ROW_CASE(TFLOAT, float, F32)
    342                 READ_TABLE_ROW_CASE(TDOUBLE, double, F64)
    343                 READ_TABLE_ROW_CASE(TLOGICAL, bool, BOOL);
     344                READ_TABLE_ROW_CASE(TLONG, long, S32,S32)
     345                READ_TABLE_ROW_CASE(TFLOAT, float, F32,F32)
     346                READ_TABLE_ROW_CASE(TDOUBLE, double, F64,F64)
     347                READ_TABLE_ROW_CASE(TLOGICAL, bool, BOOL,S8);
    344348            case TSTRING: {
    345349                    char* value = psAlloc(repeat+1);
Note: See TracChangeset for help on using the changeset viewer.