summaryrefslogtreecommitdiff
path: root/x11/kdelibs3/patches/patch-de
diff options
context:
space:
mode:
Diffstat (limited to 'x11/kdelibs3/patches/patch-de')
-rw-r--r--x11/kdelibs3/patches/patch-de85
1 files changed, 80 insertions, 5 deletions
diff --git a/x11/kdelibs3/patches/patch-de b/x11/kdelibs3/patches/patch-de
index f418e9fb07d..9ea9ac8d8b0 100644
--- a/x11/kdelibs3/patches/patch-de
+++ b/x11/kdelibs3/patches/patch-de
@@ -1,13 +1,88 @@
-$NetBSD: patch-de,v 1.1.2.2 2005/04/16 19:47:33 salo Exp $
+$NetBSD: patch-de,v 1.1.2.3 2005/05/01 22:06:21 salo Exp $
---- kimgio/xview.cpp.orig 2003-09-07 14:17:55.000000000 +0200
-+++ kimgio/xview.cpp 2005-04-13 23:34:18.000000000 +0200
-@@ -60,6 +60,8 @@
+--- kimgio/xview.cpp.orig 2003-09-08 00:17:55.000000000 +1200
++++ kimgio/xview.cpp
+@@ -7,12 +7,16 @@
+
+ #include <stdio.h>
+ #include <string.h>
++#include <stdlib.h>
+ #include <qimage.h>
+
+ #include "xview.h"
+
+ #define BUFSIZE 1024
+
++static const int b_255_3[]= {0,85,170,255}, // index*255/3
++ rg_255_7[]={0,36,72,109,145,182,218,255}; // index *255/7
++
+ void kimgio_xv_read( QImageIO *_imageio )
+ {
+ int x=-1;
+@@ -48,10 +52,14 @@ void kimgio_xv_read( QImageIO *_imageio
+ sscanf(str, "%d %d %d", &x, &y, &maxval);
+
+ if (maxval != 255) return;
++ int blocksize = x*y;
++ if(x < 0 || y < 0 || blocksize < x || blocksize < y)
++ return;
+
+ // now follows a binary block of x*y bytes.
+- int blocksize = x*y;
+- char *block = new char[ blocksize ];
++ char *block = (char*) malloc(blocksize);
++ if(!block)
++ return;
+
+ if (iodev->readBlock(block, blocksize) != blocksize )
+ {
+@@ -60,6 +68,10 @@ void kimgio_xv_read( QImageIO *_imageio
// Create the image
QImage image( x, y, 8, maxval + 1, QImage::BigEndian );
-+ if( image.isNull())
++ if( image.isNull()) {
++ free(block);
+ return;
++ }
// how do the color handling? they are absolute 24bpp
// or at least can be calculated as such.
+@@ -67,29 +79,9 @@ void kimgio_xv_read( QImageIO *_imageio
+
+ for ( int j = 0; j < 256; j++ )
+ {
+-// ----------- OLIVER EIDEN
+-// That is the old-code !
+-/* r = ((int) ((j >> 5) & 0x07)) << 5;
+- g = ((int) ((j >> 2) & 0x07)) << 5;
+- b = ((int) ((j >> 0) & 0x03)) << 6;*/
+-
+-
+-// That is the code-how xv, decode 3-3-2 pixmaps, it is slighly different,
+-// but yields much better visuals results
+-/* r = (((int) ((j >> 5) & 0x07)) *255) / 7;
+- g = (((int) ((j >> 2) & 0x07)) *255) / 7;
+- b = (((int) ((j >> 0) & 0x03)) *255) / 3;*/
+-
+-// This is the same as xv, with multiplications/divisions replaced by indexing
+-
+-// Look-up table to avoid multiplications and divisons
+- static int b_255_3[]= {0,85,170,255}, // index*255/3
+- rg_255_7[]={0,36,72,109,145,182,218,255}; // index *255/7
+-
+ r = rg_255_7[((j >> 5) & 0x07)];
+ g = rg_255_7[((j >> 2) & 0x07)];
+ b = b_255_3[((j >> 0) & 0x03)];
+-// ---------------
+ image.setColor( j, qRgb( r, g, b ) );
+ }
+
+@@ -102,7 +94,7 @@ void kimgio_xv_read( QImageIO *_imageio
+ _imageio->setImage( image );
+ _imageio->setStatus( 0 );
+
+- delete [] block;
++ free(block);
+ return;
+ }
+