You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
521 lines
16 KiB
521 lines
16 KiB
--- xv-3.10a/xvinfo.c
|
|
+++ xv-3.10a/xvinfo.c
|
|
@@ -26,7 +26,7 @@
|
|
#define INFOHIGH 270
|
|
|
|
/* max length of an Info String */
|
|
-#define ISTRLEN 80
|
|
+#define ISTRLEN 256
|
|
|
|
/* baseline of top line of text */
|
|
#define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT)
|
|
--- xv-3.10a/xvpng.c
|
|
+++ xv-3.10a/xvpng.c
|
|
@@ -31,6 +31,7 @@
|
|
|
|
#ifdef HAVE_PNG
|
|
|
|
+#include "zlib.h"
|
|
#include "png.h"
|
|
|
|
/*** Stuff for PNG Dialog box ***/
|
|
@@ -41,7 +42,9 @@
|
|
#define COMPRESSION 6 /* default zlib compression level, not max
|
|
(Z_BEST_COMPRESSION) */
|
|
|
|
-#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS)
|
|
+/* old
|
|
+#define HAVE_tRNS (info_ptr->valid & PNG_INFO_tRNS) */
|
|
+#define HAVE_tRNS png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS)
|
|
|
|
#define DWIDE 86
|
|
#define DHIGH 104
|
|
@@ -444,6 +447,10 @@
|
|
byte *p, *png_line;
|
|
char software[256];
|
|
char *savecmnt;
|
|
+ /* for storing values until all are accumulated, so that the image header can be set in full */
|
|
+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type;
|
|
+ png_uint_32 _width,_height;
|
|
+ png_time _mod_time;
|
|
|
|
if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
|
|
png_xv_error, png_xv_warning)) == NULL) {
|
|
@@ -458,7 +465,7 @@
|
|
FatalError(software);
|
|
}
|
|
|
|
- if (setjmp(png_ptr->jmpbuf)) {
|
|
+ if (setjmp(png_jmpbuf(png_ptr))) {
|
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
|
return -1;
|
|
}
|
|
@@ -489,8 +496,8 @@
|
|
png_set_filter(png_ptr, 0, filter);
|
|
}
|
|
|
|
- info_ptr->width = w;
|
|
- info_ptr->height = h;
|
|
+ _width = w;
|
|
+ _height = h;
|
|
if (w <= 0 || h <= 0) {
|
|
SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
|
|
fbasename, w, h);
|
|
@@ -498,7 +505,7 @@
|
|
return -1;
|
|
}
|
|
|
|
- info_ptr->interlace_type = interCB.val ? 1 : 0;
|
|
+ _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE;
|
|
|
|
linesize = 0; /* quiet a compiler warning */
|
|
|
|
@@ -542,40 +549,44 @@
|
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
|
return -1;
|
|
}
|
|
- info_ptr->color_type = PNG_COLOR_TYPE_RGB;
|
|
- info_ptr->bit_depth = 8;
|
|
+ _color_type = PNG_COLOR_TYPE_RGB;
|
|
+ _bit_depth = 8;
|
|
} else /* ptype == PIC8 */ {
|
|
linesize = w;
|
|
- info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
|
|
+ _color_type = PNG_COLOR_TYPE_PALETTE;
|
|
if (numuniqcols <= 2)
|
|
- info_ptr->bit_depth = 1;
|
|
+ _bit_depth = 1;
|
|
else
|
|
if (numuniqcols <= 4)
|
|
- info_ptr->bit_depth = 2;
|
|
+ _bit_depth = 2;
|
|
else
|
|
if (numuniqcols <= 16)
|
|
- info_ptr->bit_depth = 4;
|
|
+ _bit_depth = 4;
|
|
else
|
|
- info_ptr->bit_depth = 8;
|
|
+ _bit_depth = 8;
|
|
|
|
for (i = 0; i < numuniqcols; i++) {
|
|
palette[i].red = r1[i];
|
|
palette[i].green = g1[i];
|
|
palette[i].blue = b1[i];
|
|
}
|
|
- info_ptr->num_palette = numuniqcols;
|
|
- info_ptr->palette = palette;
|
|
+/* cannot find a setter for this, unsure if it is necessary anymore...
|
|
info_ptr->valid |= PNG_INFO_PLTE;
|
|
+*/
|
|
+ /* set the header just in case it's needed */
|
|
+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,
|
|
+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);
|
|
+ png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols);
|
|
}
|
|
}
|
|
|
|
else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) {
|
|
- info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
|
|
+ _color_type = PNG_COLOR_TYPE_GRAY;
|
|
if (colorType == F_BWDITHER) {
|
|
/* shouldn't happen */
|
|
if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()");
|
|
|
|
- info_ptr->bit_depth = 1;
|
|
+ _bit_depth = 1;
|
|
if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) {
|
|
remap[0] = 1;
|
|
remap[1] = 0;
|
|
@@ -595,7 +606,7 @@
|
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
|
return -1;
|
|
}
|
|
- info_ptr->bit_depth = 8;
|
|
+ _bit_depth = 8;
|
|
}
|
|
else /* ptype == PIC8 */ {
|
|
int low_precision;
|
|
@@ -617,7 +628,7 @@
|
|
for (; i < 256; i++)
|
|
remap[i]=0; /* shouldn't be necessary, but... */
|
|
|
|
- info_ptr->bit_depth = 8;
|
|
+ _bit_depth = 8;
|
|
|
|
/* Note that this fails most of the time because of gamma */
|
|
/* (and that would be a bug: GRR FIXME) */
|
|
@@ -636,7 +647,7 @@
|
|
for (i = 0; i < numuniqcols; i++) {
|
|
remap[i] &= 0xf;
|
|
}
|
|
- info_ptr->bit_depth = 4;
|
|
+ _bit_depth = 4;
|
|
|
|
/* try to adjust to 2-bit precision grayscale */
|
|
|
|
@@ -652,7 +663,7 @@
|
|
for (i = 0; i < numuniqcols; i++) {
|
|
remap[i] &= 3;
|
|
}
|
|
- info_ptr->bit_depth = 2;
|
|
+ _bit_depth = 2;
|
|
|
|
/* try to adjust to 1-bit precision grayscale */
|
|
|
|
@@ -668,7 +679,7 @@
|
|
for (i = 0; i < numuniqcols; i++) {
|
|
remap[i] &= 1;
|
|
}
|
|
- info_ptr->bit_depth = 1;
|
|
+ _bit_depth = 1;
|
|
}
|
|
}
|
|
}
|
|
@@ -677,6 +688,9 @@
|
|
else
|
|
png_error(png_ptr, "Unknown colorstyle in WritePNG");
|
|
|
|
+ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,
|
|
+ _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);
|
|
+
|
|
if ((text = (png_textp)malloc(sizeof(png_text)))) {
|
|
sprintf(software, "XV %s", REVDATE);
|
|
|
|
@@ -685,20 +699,22 @@
|
|
text->text = software;
|
|
text->text_length = strlen(text->text);
|
|
|
|
- info_ptr->max_text = 1;
|
|
- info_ptr->num_text = 1;
|
|
- info_ptr->text = text;
|
|
+/* max_text seems to be internal only now, do not set
|
|
+ info_ptr->max_text = 1; */
|
|
+ png_set_text(png_ptr,info_ptr,text,1);
|
|
}
|
|
|
|
Display_Gamma = gDial.val; /* Save the current gamma for loading */
|
|
|
|
// GRR FIXME: add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox
|
|
- info_ptr->gamma = 1.0/gDial.val;
|
|
- info_ptr->valid |= PNG_INFO_gAMA;
|
|
+ png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val);
|
|
+/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe..
|
|
+ info_ptr->valid |= PNG_INFO_gAMA; */
|
|
|
|
+/* might need to be png_write_info_before_PLTE() ... */
|
|
png_write_info(png_ptr, info_ptr);
|
|
|
|
- if (info_ptr->bit_depth < 8)
|
|
+ if (_bit_depth < 8)
|
|
png_set_packing(png_ptr);
|
|
|
|
pass=png_set_interlace_handling(png_ptr);
|
|
@@ -711,13 +727,13 @@
|
|
int j;
|
|
p = pic;
|
|
for (j = 0; j < h; ++j) {
|
|
- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) {
|
|
+ if (_color_type == PNG_COLOR_TYPE_GRAY) {
|
|
int k;
|
|
for (k = 0; k < w; ++k)
|
|
png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) :
|
|
remap[pc2nc[p[k]]];
|
|
png_write_row(png_ptr, png_line);
|
|
- } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) {
|
|
+ } else if (_color_type == PNG_COLOR_TYPE_PALETTE) {
|
|
int k;
|
|
for (k = 0; k < w; ++k)
|
|
png_line[k] = pc2nc[p[k]];
|
|
@@ -739,28 +755,31 @@
|
|
(savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) {
|
|
png_textp tp;
|
|
char *comment, *key;
|
|
+ int nt;
|
|
+ int mt;
|
|
|
|
strcpy(savecmnt, picComments);
|
|
key = savecmnt;
|
|
+ png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */
|
|
tp = text;
|
|
- info_ptr->num_text = 0;
|
|
+ nt = 0;
|
|
|
|
comment = strchr(key, ':');
|
|
|
|
do {
|
|
/* Allocate a larger structure for comments if necessary */
|
|
- if (info_ptr->num_text >= info_ptr->max_text)
|
|
+ if (nt >= mt)
|
|
{
|
|
if ((tp =
|
|
- realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL)
|
|
+ realloc(text, (nt + 2)*sizeof(png_text))) == NULL)
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
text = tp;
|
|
- tp = &text[info_ptr->num_text];
|
|
- info_ptr->max_text += 2;
|
|
+ tp = &text[nt];
|
|
+ mt += 2;
|
|
}
|
|
}
|
|
|
|
@@ -810,7 +829,7 @@
|
|
}
|
|
|
|
tp->compression = tp->text_length > 640 ? 0 : -1;
|
|
- info_ptr->num_text++;
|
|
+ nt++;
|
|
tp++;
|
|
}
|
|
}
|
|
@@ -834,27 +853,29 @@
|
|
tp->text = key;
|
|
tp->text_length = q - key;
|
|
tp->compression = tp->text_length > 750 ? 0 : -1;
|
|
- info_ptr->num_text++;
|
|
+ nt++;
|
|
key = NULL;
|
|
}
|
|
} while (key && *key);
|
|
+ png_set_text(png_ptr,info_ptr,text,nt);
|
|
}
|
|
else {
|
|
- info_ptr->num_text = 0;
|
|
+ png_set_text(png_ptr,info_ptr,text,0);
|
|
}
|
|
}
|
|
- info_ptr->text = text;
|
|
|
|
- png_convert_from_time_t(&(info_ptr->mod_time), time(NULL));
|
|
- info_ptr->valid |= PNG_INFO_tIME;
|
|
+ png_convert_from_time_t(&_mod_time, time(NULL));
|
|
+ png_set_tIME(png_ptr,info_ptr,&_mod_time);
|
|
+/* dunno how to set validity
|
|
+ info_ptr->valid |= PNG_INFO_tIME; */
|
|
|
|
png_write_end(png_ptr, info_ptr);
|
|
fflush(fp); /* just in case we core-dump before finishing... */
|
|
|
|
if (text) {
|
|
free(text);
|
|
- /* must do this or png_destroy_write_struct() 0.97+ will free text again: */
|
|
- info_ptr->text = (png_textp)NULL;
|
|
+ /* must do this or png_destroy_write_struct() 0.97+ will free text again:
|
|
+ info_ptr->text = (png_textp)NULL; */
|
|
if (savecmnt)
|
|
{
|
|
free(savecmnt);
|
|
@@ -886,6 +907,14 @@
|
|
int pass;
|
|
int gray_to_rgb;
|
|
size_t commentsize;
|
|
+ /* temp storage vars for libpng15 migration */
|
|
+ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette;
|
|
+ png_uint_32 _width,_height;
|
|
+ png_timep _mod_time;
|
|
+ double _gamma;
|
|
+ png_textp _text;
|
|
+ png_colorp _palette;
|
|
+ png_color_16p _background;
|
|
|
|
fbasename = BaseName(fname);
|
|
|
|
@@ -921,7 +950,7 @@
|
|
FatalError("malloc failure in LoadPNG");
|
|
}
|
|
|
|
- if (setjmp(png_ptr->jmpbuf)) {
|
|
+ if (setjmp(png_jmpbuf(png_ptr))) {
|
|
fclose(fp);
|
|
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
|
|
if (!read_anything) {
|
|
@@ -945,8 +974,10 @@
|
|
#endif
|
|
png_read_info(png_ptr, info_ptr);
|
|
|
|
- pinfo->w = pinfo->normw = info_ptr->width;
|
|
- pinfo->h = pinfo->normh = info_ptr->height;
|
|
+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL);
|
|
+
|
|
+ pinfo->w = pinfo->normw = _width;
|
|
+ pinfo->h = pinfo->normh = _height;
|
|
if (pinfo->w <= 0 || pinfo->h <= 0) {
|
|
SetISTR(ISTR_WARNING, "%s: image dimensions out of range (%dx%d)",
|
|
fbasename, pinfo->w, pinfo->h);
|
|
@@ -957,9 +988,9 @@
|
|
pinfo->frmType = F_PNG;
|
|
|
|
sprintf(pinfo->fullInfo, "PNG, %d bit ",
|
|
- info_ptr->bit_depth * info_ptr->channels);
|
|
+ _bit_depth * png_get_channels(png_ptr,info_ptr));
|
|
|
|
- switch(info_ptr->color_type) {
|
|
+ switch(_color_type) {
|
|
case PNG_COLOR_TYPE_PALETTE:
|
|
strcat(pinfo->fullInfo, "palette color");
|
|
break;
|
|
@@ -983,15 +1014,17 @@
|
|
|
|
sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo),
|
|
", %sinterlaced. (%d bytes)",
|
|
- info_ptr->interlace_type ? "" : "non-", filesize);
|
|
+ _interlace_type ? "" : "non-", filesize);
|
|
|
|
- sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height);
|
|
+ sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height);
|
|
|
|
- if (info_ptr->bit_depth < 8)
|
|
+ if (_bit_depth < 8)
|
|
png_set_packing(png_ptr);
|
|
|
|
- if (info_ptr->valid & PNG_INFO_gAMA)
|
|
- png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma);
|
|
+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) {
|
|
+ png_get_gAMA(png_ptr,info_ptr,&_gamma);
|
|
+ png_set_gamma(png_ptr, Display_Gamma, _gamma);
|
|
+ }
|
|
/*
|
|
*else
|
|
* png_set_gamma(png_ptr, Display_Gamma, 0.45);
|
|
@@ -1000,7 +1033,7 @@
|
|
gray_to_rgb = 0; /* quiet a compiler warning */
|
|
|
|
if (have_imagebg) {
|
|
- if (info_ptr->bit_depth == 16) {
|
|
+ if (_bit_depth == 16) {
|
|
my_background.red = imagebgR;
|
|
my_background.green = imagebgG;
|
|
my_background.blue = imagebgB;
|
|
@@ -1013,8 +1046,8 @@
|
|
}
|
|
png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
|
|
0, Display_Gamma);
|
|
- if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
|
|
- (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
|
|
+ if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
|
|
+ (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
|
|
(imagebgR != imagebgG || imagebgR != imagebgB)) /* i.e., colored bg */
|
|
{
|
|
png_set_gray_to_rgb(png_ptr);
|
|
@@ -1022,8 +1055,9 @@
|
|
gray_to_rgb = 1;
|
|
}
|
|
} else {
|
|
- if (info_ptr->valid & PNG_INFO_bKGD) {
|
|
- png_set_background(png_ptr, &info_ptr->background,
|
|
+ if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) {
|
|
+ png_get_bKGD(png_ptr,info_ptr,&_background);
|
|
+ png_set_background(png_ptr, _background,
|
|
PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
|
|
} else {
|
|
my_background.red = my_background.green = my_background.blue =
|
|
@@ -1033,13 +1067,13 @@
|
|
}
|
|
}
|
|
|
|
- if (info_ptr->bit_depth == 16)
|
|
+ if (_bit_depth == 16)
|
|
png_set_strip_16(png_ptr);
|
|
|
|
- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
|
|
- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
|
|
+ if (_color_type == PNG_COLOR_TYPE_GRAY ||
|
|
+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
|
|
{
|
|
- if (info_ptr->bit_depth == 1)
|
|
+ if (_bit_depth == 1)
|
|
pinfo->colType = F_BWDITHER;
|
|
else
|
|
pinfo->colType = F_GREYSCALE;
|
|
@@ -1049,9 +1083,11 @@
|
|
pass=png_set_interlace_handling(png_ptr);
|
|
|
|
png_read_update_info(png_ptr, info_ptr);
|
|
+ /* get HIDR again just in case the info_ptr changed */
|
|
+ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL);
|
|
|
|
- if (info_ptr->color_type == PNG_COLOR_TYPE_RGB ||
|
|
- info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
|
|
+ if (_color_type == PNG_COLOR_TYPE_RGB ||
|
|
+ _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
|
|
{
|
|
linesize = 3 * pinfo->w;
|
|
if (linesize/3 < pinfo->w) { /* know pinfo->w > 0 (see above) */
|
|
@@ -1065,16 +1101,17 @@
|
|
} else {
|
|
linesize = pinfo->w;
|
|
pinfo->type = PIC8;
|
|
- if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
|
|
- info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
|
|
+ if (_color_type == PNG_COLOR_TYPE_GRAY ||
|
|
+ _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
|
|
for (i = 0; i < 256; i++)
|
|
pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
|
|
} else {
|
|
pinfo->colType = F_FULLCOLOR;
|
|
- for (i = 0; i < info_ptr->num_palette; i++) {
|
|
- pinfo->r[i] = info_ptr->palette[i].red;
|
|
- pinfo->g[i] = info_ptr->palette[i].green;
|
|
- pinfo->b[i] = info_ptr->palette[i].blue;
|
|
+ png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette);
|
|
+ for (i = 0; i < _num_palette; i++) {
|
|
+ pinfo->r[i] = _palette[i].red;
|
|
+ pinfo->g[i] = _palette[i].green;
|
|
+ pinfo->b[i] = _palette[i].blue;
|
|
}
|
|
}
|
|
}
|
|
@@ -1092,7 +1129,7 @@
|
|
png_error(png_ptr, "can't allocate space for PNG image");
|
|
}
|
|
|
|
- png_start_read_image(png_ptr);
|
|
+ /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */
|
|
|
|
for (i = 0; i < pass; i++) {
|
|
byte *p = pinfo->pic;
|
|
@@ -1106,22 +1143,23 @@
|
|
|
|
png_read_end(png_ptr, info_ptr);
|
|
|
|
- if (info_ptr->num_text > 0) {
|
|
+ png_get_text(png_ptr,info_ptr,&_text,&_num_text);
|
|
+ if (_num_text > 0) {
|
|
commentsize = 1;
|
|
|
|
- for (i = 0; i < info_ptr->num_text; i++)
|
|
- commentsize += strlen(info_ptr->text[i].key) + 1 +
|
|
- info_ptr->text[i].text_length + 2;
|
|
+ for (i = 0; i < _num_text; i++)
|
|
+ commentsize += strlen(_text[i].key) + 1 +
|
|
+ _text[i].text_length + 2;
|
|
|
|
if ((pinfo->comment = malloc(commentsize)) == NULL) {
|
|
png_warning(png_ptr,"can't allocate comment string");
|
|
}
|
|
else {
|
|
pinfo->comment[0] = '\0';
|
|
- for (i = 0; i < info_ptr->num_text; i++) {
|
|
- strcat(pinfo->comment, info_ptr->text[i].key);
|
|
+ for (i = 0; i < _num_text; i++) {
|
|
+ strcat(pinfo->comment, _text[i].key);
|
|
strcat(pinfo->comment, "::");
|
|
- strcat(pinfo->comment, info_ptr->text[i].text);
|
|
+ strncat(pinfo->comment, _text[i].text, _text[i].text_length);
|
|
strcat(pinfo->comment, "\n");
|
|
}
|
|
}
|
|
@@ -1143,7 +1181,7 @@
|
|
{
|
|
SetISTR(ISTR_WARNING,"%s: libpng error: %s", fbasename, message);
|
|
|
|
- longjmp(png_ptr->jmpbuf, 1);
|
|
+ longjmp(png_jmpbuf(png_ptr), 1);
|
|
}
|
|
|
|
|