Commit f723e33c349ccd541fbbed4f1be691e106bfd965

Authored by Jürgen Knödlseder
1 parent 09c33cf1

Make sure that the FITS image that is written to disk has the correct size.

src/fits/GFitsCfitsio.hpp
1 1 /***************************************************************************
2 2 * GFitsCfitsio.hpp - CFITSIO interface header *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2012 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -91,6 +91,7 @@
91 91 #define __ffphis(A, B, C) ffphis(A, B, C)
92 92 #define __ffpss(A, B, C, D, E, F) ffpss(A, B, C, D, E, F)
93 93 #define __ffprec(A, B, C) ffprec(A, B, C)
  94 +#define __ffrsim(A, B, C, D, E) ffrsim(A, B, C, D, E)
94 95 #define __ffsrow(A, B, C, D) ffsrow(A, B, C, D)
95 96 #define __ffthdu(A, B, C) ffthdu(A, B, C)
96 97 #define __ffuky(A, B, C, D, E, F) ffuky(A, B, C, D, E, F)
... ... @@ -168,6 +169,7 @@ typedef fitsfile __fitsfile;
168 169 #define __ffphis(A, B, C) __dummy()
169 170 #define __ffpss(A, B, C, D, E, F) __dummy()
170 171 #define __ffprec(A, B, C) __dummy()
  172 +#define __ffrsim(A, B, C, D, E) __dummy()
171 173 #define __ffsrow(A, B, C, D) __dummy()
172 174 #define __ffthdu(A, B, C) __dummy()
173 175 #define __ffuky(A, B, C, D, E, F) __dummy()
... ...
src/fits/GFitsImage.cpp
1 1 /***************************************************************************
2 2 * GFitsImage.cpp - Abstract FITS image base class *
3 3 * ----------------------------------------------------------------------- *
4   - * copyright (C) 2008-2013 by Juergen Knoedlseder *
  4 + * copyright (C) 2008-2016 by Juergen Knoedlseder *
5 5 * ----------------------------------------------------------------------- *
6 6 * *
7 7 * This program is free software: you can redistribute it and/or modify *
... ... @@ -775,6 +775,12 @@ void GFitsImage::save_image(int datatype, const void* pixels)
775 775 }
776 776 }
777 777  
  778 + // Make sure that the image on disk has the right size by resizing it
  779 + status = __ffrsim(FPTR(m_fitsfile), m_bitpix, m_naxis, m_naxes, &status);
  780 + if (status != 0) {
  781 + throw GException::fits_error(G_SAVE_IMAGE, status);
  782 + }
  783 +
778 784 // Save the image pixels (if there are some ...)
779 785 if (m_naxis > 0 && pixels != NULL) {
780 786 long* fpixel = new long[m_naxis];
... ...