Package: gwenview
Version: 1.4.2-2ubuntu4
Severity: normal
Tags: patch

Subject says it all. Example image that crashes
gwenview 1.4.2 is in KDE BTS.

Achim
diff -u gwenview-1.4.2/debian/changelog gwenview-1.4.2/debian/changelog
--- gwenview-1.4.2/debian/changelog
+++ gwenview-1.4.2/debian/changelog
@@ -1,3 +1,9 @@
+gwenview (1.4.2-2ubuntu5~allee0ppa1) hardy; urgency=low
+
+  * Fix crash with wrong EXIF info: http://bugs.kde.org/show_bug.cgi?id=159522
+
+ -- Achim Bohnet <[EMAIL PROTECTED]>  Thu, 20 Mar 2008 16:01:36 +0100
+
 gwenview (1.4.2-2ubuntu4) hardy; urgency=low
 
   * Added 2 patches from Debian:
only in patch2:
unchanged:
--- gwenview-1.4.2.orig/debian/patches/20_handle_wrong_exif_info.diff
+++ gwenview-1.4.2/debian/patches/20_handle_wrong_exif_info.diff
@@ -0,0 +1,23 @@
+Index: src/imageutils/jpegcontent.cpp
+===================================================================
+--- src/imageutils/jpegcontent.cpp	(revisione 787661)
++++ src/imageutils/jpegcontent.cpp	(copia locale)
+@@ -330,11 +330,16 @@
+ 	//         3 = centimeters
+ 	//         Other = reserved
+ 	const float INCHESPERMETER = (100. / 2.54); 
++	Exiv2::Rational r = it->toRational();
++	if (r.second == 0) {
++		// a rational with 0 as second will make hang toLong() conversion
++		r.second = 1;
++	}
+ 	switch (res) {
+ 	case 3:  // dots per cm 
+-		return (it->toLong() * 100); 
++		return int(float(r.first) * 100 / float(r.second)); 
+ 	default:  // dots per inch 
+-		return (it->toLong() * INCHESPERMETER); 
++		return int(float(r.first) * INCHESPERMETER / float(r.second)); 
+ 	}
+ 
+ 	return 0;

Reply via email to