summaryrefslogtreecommitdiffstats
path: root/extra/source/xv/xv-3.10a-enhancements.20070520-20081216.diff
diff options
context:
space:
mode:
Diffstat (limited to 'extra/source/xv/xv-3.10a-enhancements.20070520-20081216.diff')
-rw-r--r--extra/source/xv/xv-3.10a-enhancements.20070520-20081216.diff293
1 files changed, 0 insertions, 293 deletions
diff --git a/extra/source/xv/xv-3.10a-enhancements.20070520-20081216.diff b/extra/source/xv/xv-3.10a-enhancements.20070520-20081216.diff
deleted file mode 100644
index c9b5528f5..000000000
--- a/extra/source/xv/xv-3.10a-enhancements.20070520-20081216.diff
+++ /dev/null
@@ -1,293 +0,0 @@
- 20070621
- fixed improper ClearCode termination condition in GIF decoder (JZ); fixed
- some minor inconsistencies in Makefile (GRR)
- - xv-joe-zbiciak-20070621-gif-decoder-bugfix.dif
-
- 20080121
- removed duplicate "XDestroyWindow(theDisp, pngW);" in xvmisc.c (IMC); fixed
- empty-filename click-and-crash bug in xvdir.c (IMC, DB)
- - xv-ian-collier-20080118-crash-fixes.msg
- - xv-david-bath-20080901-empty-filename-save-crash-fix.dif
-
- 20081205
- reverted xvxwd.c to SJT's version (bug reported by Jari Ruusu)
-
- 20081216
- fixed crash-bug in IFF decoder (EP)
- - xv-elmar-plischke-20081216-xviff-crash-fix.dif
-
-
-
-diff -ru ../test3.20070520.stock/xv-3.10a/xv.h ./xv.h
---- ../test3.20070520.stock/xv-3.10a/xv.h 2007-05-20 22:23:33.000000000 -0700
-+++ ./xv.h 2008-12-16 09:45:00.000000000 -0800
-@@ -16,8 +16,9 @@
- /* GRR 2nd public jumbo F+E patches: 20050410 */
- /* GRR 3rd public jumbo F+E patches: 20050501 */
- /* GRR 4th public jumbo F+E patch: 20070520 */
--#define REVDATE "version 3.10a-jumboFix+Enh of 20070520"
--#define VERSTR "3.10a-20070520"
-+/* GRR 5th public jumbo F+E patch: 200xxxxx (probably mid-2009) */
-+#define REVDATE "version 3.10a-jumboFix+Enh of 20081216 (interim!)"
-+#define VERSTR "3.10a-20081216"
-
- /*
- * uncomment the following, and modify for your site, but only if you've
-
-
-
-diff -ru ../test3.20070520.stock/xv-3.10a/xvdir.c ./xvdir.c
---- ../test3.20070520.stock/xv-3.10a/xvdir.c 2007-05-20 22:23:33.000000000 -0700
-+++ ./xvdir.c 2008-01-21 13:02:38.000000000 -0800
-@@ -539,8 +539,9 @@
- return -1;
- }
-
-- /* handle clicks inside the filename box */
-- if (x > 80 &&
-+ /* handle clicks inside the filename box, but only when box is not empty */
-+ if (enPos > stPos &&
-+ x > 80 &&
- y > dList.y + (int) dList.h + 30 &&
- x < 80 + DNAMWIDE+6 &&
- y < dList.y + (int) dList.h + 30 + LINEHIGH+5) {
-
-
-
-diff -ru ../test3.20070520.stock/xv-3.10a/xvgif.c ./xvgif.c
---- ../test3.20070520.stock/xv-3.10a/xvgif.c 2007-05-20 22:23:33.000000000 -0700
-+++ ./xvgif.c 2007-06-21 09:36:40.000000000 -0700
-@@ -700,7 +700,7 @@
- * associated output code on the output queue.
- */
-
-- while (CurCode > BitMask) {
-+ while (CurCode >= ClearCode) { /* Joe Zbiciak fix, 20070621 */
- if (OutCount > 4096) break; /* corrupt file */
- OutCode[OutCount++] = Suffix[CurCode];
- CurCode = Prefix[CurCode];
-
-
-
-diff -ru ../test3.20070520.stock/xv-3.10a/xvmisc.c ./xvmisc.c
---- ../test3.20070520.stock/xv-3.10a/xvmisc.c 2007-05-20 22:23:33.000000000 -0700
-+++ ./xvmisc.c 2008-01-21 12:57:29.000000000 -0800
-@@ -561,10 +561,6 @@
- if (mgcsfxW) XDestroyWindow(theDisp, mgcsfxW);
- #endif
-
--#ifdef HAVE_PNG
-- if (pngW) XDestroyWindow(theDisp, pngW);
--#endif
--
- /* if NOT using stdcmap for images, free stdcmap */
- if (colorMapMode != CM_STDCMAP) {
- int j;
-
-
-
-[This one reverts xvxwd.c to the pre-2007 SJT version, which actually worked...]
-
-diff -ru ../test3.20070520.stock/xv-3.10a/xvxwd.c ./xvxwd.c
---- ../test3.20070520.stock/xv-3.10a/xvxwd.c 2007-05-20 22:23:33.000000000 -0700
-+++ ./xvxwd.c 2008-12-06 00:30:44.000000000 -0800
-@@ -19,6 +19,12 @@
- */
-
- #include "xv.h"
-+#include <limits.h> /* for CHAR_BIT */
-+
-+/* SJT: just in case ... */
-+#ifndef CHAR_BIT
-+# define CHAR_BIT 8
-+#endif
-
-
- /***************************** x11wd.h *****************************/
-@@ -83,9 +89,14 @@
- static int writebiglong PARM((FILE *, CARD32));
- #endif
-
-+static void getcolorshift PARM((CARD32, int *, int *)); /* SJT */
-+
-+/* SJT: for 16bpp and 24bpp shifts */
-+static int red_shift_right, red_justify_left,
-+ grn_shift_right, grn_justify_left,
-+ blu_shift_right, blu_justify_left;
- static byte *pic8, *pic24;
--static CARD32 red_mask, green_mask, blue_mask;
--static int red_shift, green_shift, blue_shift;
-+static CARD32 red_mask, grn_mask, blu_mask;
- static int bits_per_item, bits_used, bit_shift,
- bits_per_pixel, bits_per_rgb;
- static char buf[4];
-@@ -189,38 +200,34 @@
- return 0;
- }
-
-- switch (bits_per_pixel) {
-- case 16:
-- case 24:
-- case 32:
-- ;
-- default:
-- xwdError("True/Direct supports only 16, 24, and 32 bits");
-- return 0;
-- }
-+ for (row=0; row<rows; row++) {
-+ for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
-+ CARD32 ul;
-
-- if (byte_order == MSBFirst) {
-- for (row=0; row<rows; row++) {
-- for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
-- register CARD32 ul = getpixnum(ifp);
--
-- *xP++ = ul >> red_shift & red_mask ;
-- *xP++ = ul >> green_shift & green_mask;
-- *xP++ = ul >> blue_shift & blue_mask ;
-- };
-- for (col=0; col<padright; col++) getpixnum(ifp);
-- }
-- } else {
-- for (row=0; row<rows; row++) {
-- for (col=0, xP=pic24+(row*cols*3); col<cols; col++) {
-- register CARD32 ul = getpixnum(ifp);
--
-- *xP++ = ul >> blue_shift & blue_mask ;
-- *xP++ = ul >> green_shift & green_mask;
-- *xP++ = ul >> red_shift & red_mask ;
-- };
-- for (col=0; col<padright; col++) getpixnum(ifp);
-+ ul = getpixnum(ifp);
-+ switch (bits_per_pixel) {
-+ case 16:
-+ case 24:
-+ case 32:
-+ /* SJT: shift all the way to the right and then shift left. The
-+ pairs of shifts could be combined. There will be two right and
-+ one left shift, but it's unknown which will be which. It seems
-+ easier to do the shifts (which might be 0) separately than to
-+ have a complex set of tests. I believe this is independent of
-+ byte order but I have no way to test.
-+ */
-+ *xP++ = ((ul & red_mask) >> red_shift_right) << red_justify_left;
-+ *xP++ = ((ul & grn_mask) >> grn_shift_right) << grn_justify_left;
-+ *xP++ = ((ul & blu_mask) >> blu_shift_right) << blu_justify_left;
-+ break;
-+
-+ default:
-+ xwdError("True/Direct supports only 16, 24, and 32 bits");
-+ return 0;
-+ }
- }
-+
-+ for (col=0; col<padright; col++) getpixnum(ifp);
- }
-
- pinfo->type = PIC24;
-@@ -445,28 +452,18 @@
- (i.e., 3 bytes, no alpha/padding) */
-
-
-- bits_used = bits_per_item;
-+ bits_used = bits_per_item;
-
- if (bits_per_pixel == sizeof(pixel_mask) * 8) pixel_mask = (CARD32) -1;
- else pixel_mask = (1 << bits_per_pixel) - 1;
-
-- red_mask = h11P->red_mask;
-- green_mask = h11P->grn_mask;
-- blue_mask = h11P->blu_mask;
--
-- red_shift = blue_shift = green_shift = 0;
-- while (!(red_mask & 1)) {
-- red_mask >>= 1;
-- ++red_shift;
-- }
-- while (!(blue_mask & 1)) {
-- blue_mask >>= 1;
-- ++blue_shift;
-- }
-- while (!(green_mask & 1)) {
-- green_mask >>= 1;
-- ++green_shift;
-- }
-+ red_mask = h11P->red_mask;
-+ grn_mask = h11P->grn_mask;
-+ blu_mask = h11P->blu_mask;
-+
-+ getcolorshift(red_mask, &red_shift_right, &red_justify_left);
-+ getcolorshift(grn_mask, &grn_shift_right, &grn_justify_left);
-+ getcolorshift(blu_mask, &blu_shift_right, &blu_justify_left);
-
- byteP = (char *) buf;
- shortP = (CARD16 *) buf;
-@@ -476,6 +473,45 @@
- }
-
-
-+/* SJT: figure out the proper shifts */
-+static void getcolorshift (CARD32 mask, int *rightshift, int *leftshift)
-+{
-+ int lshift, rshift;
-+ unsigned int uu;
-+
-+ if (mask == 0)
-+ {
-+ *rightshift = *leftshift = 0;
-+ return;
-+ }
-+
-+ uu = mask;
-+ lshift = rshift = 0;
-+ while ((uu & 0xf) == 0)
-+ {
-+ rshift += 4;
-+ uu >>= 4;
-+ }
-+ while ((uu & 1) == 0)
-+ {
-+ rshift++;
-+ uu >>= 1;
-+ }
-+
-+ while (uu != 0)
-+ {
-+ if (uu & 1)
-+ {
-+ lshift++;
-+ uu >>= 1;
-+ }
-+ }
-+ *rightshift = rshift;
-+ *leftshift = CHAR_BIT * sizeof(pixel) - lshift;
-+ return;
-+}
-+
-+
- /******************************/
- static CARD32 getpixnum(file)
- FILE* file;
-
-
-
-diff -ru ../test3.20070520.stock/xv-3.10a/xviff.c ./xviff.c
---- ../test3.20070520.stock/xv-3.10a/xviff.c 2007-05-13 17:50:59.000000000 -0700
-+++ ./xviff.c 2008-12-16 09:20:25.000000000 -0800
-@@ -73,6 +73,7 @@
- int BMHDok, CMAPok, CAMGok;
- int bmhd_width, bmhd_height, bmhd_bitplanes, bmhd_transcol;
- int i, j, k, lineskip, colors, fmt;
-+ int npixels = 0; /* needs to be initialized _outside_ while-loop */
- byte bmhd_masking, bmhd_compression;
- long chunkLen, camg_viewmode;
- byte *databuf, *dataptr, *cmapptr, *picptr, *pic, *bodyptr;
-@@ -138,7 +139,6 @@
- BODY chunk was found or dataptr ran over end of file */
-
- while ((rv<0) && (dataptr < (databuf + filesize))) {
-- int npixels = 0;
- chunkLen = (iff_getlong(dataptr + 4) + 1) & 0xfffffffe; /* make even */
-
- if (strncmp((char *) dataptr, "BMHD", (size_t) 4)==0) { /* BMHD chunk? */