mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-20 04:02:27 +00:00
- fix crash on png files
Submitted by: Joerg Wunsch - add LICENSE
This commit is contained in:
parent
65cc9959f3
commit
bfbf1b510c
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=261895
@ -7,7 +7,7 @@
|
||||
|
||||
PORTNAME= knews
|
||||
PORTVERSION= 1.0b.1
|
||||
PORTREVISION= 10
|
||||
PORTREVISION= 11
|
||||
CATEGORIES= news
|
||||
MASTER_SITES= http://www.matematik.su.se/~kjj/
|
||||
|
||||
@ -19,6 +19,8 @@ LIB_DEPENDS= jpeg.11:${PORTSDIR}/graphics/jpeg \
|
||||
compface:${PORTSDIR}/mail/faces
|
||||
RUN_DEPENDS= newsp:${PORTSDIR}/print/mp-letter
|
||||
|
||||
LICENSE= GPLv2
|
||||
|
||||
USE_IMAKE= yes
|
||||
USE_XORG= xmu xpm xt sm ice xext x11
|
||||
MAKE_FLAGS= BINDIR=${PREFIX}/bin MANDIR=${PREFIX}/man/man1 CC="${CC}" \
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- src/png.c Sat Nov 21 09:55:13 1998
|
||||
+++ src/png.c Fri Jul 13 11:29:00 2001
|
||||
@@ -78,6 +78,12 @@
|
||||
--- src/png.c.orig 1998-11-21 15:55:13.000000000 +0100
|
||||
+++ src/png.c 2010-09-15 07:51:20.000000000 +0200
|
||||
@@ -76,10 +76,16 @@
|
||||
return fp;
|
||||
}
|
||||
|
||||
+static Pixmap rep_fail(const char *e) {
|
||||
+ ArtTextAddLine(main_widgets.text, e, ascii_font->body_font,
|
||||
@ -15,34 +17,42 @@
|
||||
+ png_structp png_ptr;
|
||||
+ png_infop info_ptr;
|
||||
Pixmap pixmap;
|
||||
@@ -94,9 +100,6 @@
|
||||
FILE *volatile vol_fp = NULL;
|
||||
void *volatile vol_pic = NULL;
|
||||
@@ -92,13 +98,21 @@
|
||||
|
||||
init_png_cmap();
|
||||
|
||||
- if (!(vol_fp = dump_for_png(data, len))) {
|
||||
- ArtTextAddLine(main_widgets.text, "[knews: temp file error.]",
|
||||
- ascii_font->body_font, global.alert_pixel);
|
||||
- return None;
|
||||
- }
|
||||
+ if (!(vol_fp = dump_for_png(data, len)))
|
||||
+ return rep_fail("[knews: temp file error.]");
|
||||
+
|
||||
+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
|
||||
+ NULL, NULL, NULL);
|
||||
+ if (!png_ptr)
|
||||
+ return rep_fail("[knews: can't allocate PNG structure.]");
|
||||
+ info_ptr = png_create_info_struct(png_ptr);
|
||||
+ if (!info_ptr) {
|
||||
+ png_destroy_read_struct(&png_ptr,
|
||||
+ (png_infopp)NULL, (png_infopp)NULL);
|
||||
+ return rep_fail("[knews: can't PNG info structure.]");
|
||||
}
|
||||
|
||||
- if (setjmp(p_str.jmpbuf))
|
||||
+ if (setjmp(png_jmpbuf(png_ptr)))
|
||||
ArtTextAddLine(main_widgets.text, "[knews: png error.]",
|
||||
@@ -110,18 +113,26 @@
|
||||
ascii_font->body_font, global.alert_pixel);
|
||||
else {
|
||||
@@ -108,58 +122,55 @@
|
||||
unsigned int per_line = 0;
|
||||
unsigned int i, j, pass;
|
||||
|
||||
- png_read_init(&p_str);
|
||||
- png_info_init(&p_info);
|
||||
+ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
|
||||
+ NULL, NULL, NULL);
|
||||
+ if (!png_ptr)
|
||||
+ return rep_fail("[knews: can't allocate PNG structure.]");
|
||||
+ info_ptr = png_create_info_struct(png_ptr);
|
||||
+ if (!info_ptr) {
|
||||
+ png_destroy_read_struct(&png_ptr,
|
||||
+ (png_infopp)NULL, (png_infopp)NULL);
|
||||
+ return rep_fail("[knews: can't PNG info structure.]");
|
||||
+ }
|
||||
|
||||
-
|
||||
- png_init_io(&p_str, vol_fp);
|
||||
- png_read_info(&p_str, &p_info);
|
||||
+ png_init_io(png_ptr, vol_fp);
|
||||
@ -67,12 +77,14 @@
|
||||
+ if (info_ptr->valid & PNG_INFO_bKGD)
|
||||
+ png_set_background(png_ptr, &info_ptr->background,
|
||||
PNG_BACKGROUND_GAMMA_FILE, True, 1.0);
|
||||
@@ -129,3 +140,3 @@
|
||||
else {
|
||||
static png_color_16 bg = {0, };
|
||||
- png_set_background(&p_str, &bg,
|
||||
+ png_set_background(png_ptr, &bg,
|
||||
PNG_BACKGROUND_GAMMA_SCREEN, False, 1.0);
|
||||
@@ -135,10 +146,10 @@
|
||||
}
|
||||
|
||||
per_line = w;
|
||||
|
||||
- if (!(p_info.color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */
|
||||
+ if (!(info_ptr->color_type & PNG_COLOR_MASK_COLOR)) { /* grey image */
|
||||
@ -88,7 +100,7 @@
|
||||
- } else if (p_info.color_type & PNG_COLOR_MASK_PALETTE) {
|
||||
+ } else if (info_ptr->color_type & PNG_COLOR_MASK_PALETTE) {
|
||||
CMAP_ENTRY *pal;
|
||||
@@ -146,8 +157,8 @@
|
||||
int i, pn;
|
||||
|
||||
- pn = p_info.num_palette;
|
||||
+ pn = info_ptr->num_palette;
|
||||
@ -101,30 +113,44 @@
|
||||
+ pal[i].g = info_ptr->palette[i].green;
|
||||
+ pal[i].b = info_ptr->palette[i].blue;
|
||||
}
|
||||
@@ -156,3 +167,3 @@
|
||||
vol_pal = pal;
|
||||
vol_pn = pn;
|
||||
} else {
|
||||
- png_set_dither(&p_str, p_cmap, cmap_size,
|
||||
+ png_set_dither(png_ptr, p_cmap, cmap_size,
|
||||
cmap_size, NULL, True);
|
||||
@@ -160,4 +171,4 @@
|
||||
}
|
||||
|
||||
- pass = png_set_interlace_handling(&p_str);
|
||||
- png_start_read_image(&p_str);
|
||||
+ pass = png_set_interlace_handling(png_ptr);
|
||||
+ png_start_read_image(png_ptr);
|
||||
|
||||
@@ -169,3 +180,3 @@
|
||||
vol_pic = pic = (unsigned char *)XtMalloc(h * per_line);
|
||||
|
||||
@@ -167,14 +178,14 @@
|
||||
for (i = 0 ; i < pass ; i++) {
|
||||
row = pic;
|
||||
for (j = 0 ; j < h ; j++) {
|
||||
- png_read_row(&p_str, NULL, row);
|
||||
+ png_read_row(png_ptr, NULL, row);
|
||||
if (!did)
|
||||
@@ -176,3 +187,3 @@
|
||||
vol_did = did = True;
|
||||
row += per_line;
|
||||
}
|
||||
}
|
||||
|
||||
- png_read_end(&p_str, NULL);
|
||||
+ png_read_end(png_ptr, NULL);
|
||||
}
|
||||
@@ -206,3 +217,3 @@
|
||||
|
||||
if (!vol_did)
|
||||
@@ -204,7 +215,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- png_read_destroy(&p_str, &p_info, NULL);
|
||||
+ png_read_destroy(png_ptr, info_ptr, NULL);
|
||||
fclose((FILE *)vol_fp);
|
||||
XtFree((char *)vol_pic);
|
||||
XtFree((char *)vol_pal);
|
||||
|
@ -20,3 +20,5 @@ reading MIME articles, except message/partial.
|
||||
o article prefetch cache and 'trailing' cache
|
||||
o Less restrictive locking of the interface
|
||||
o Message-id lookup of articles
|
||||
|
||||
LICENSE: GLP2 or later
|
||||
|
Loading…
Reference in New Issue
Block a user