Hi,

I know that WBMP is not a popular format since WAP is long dead, but in our application it's useful for transferring small bitmaps over a serial bus.

I've noticed there is a bug in the implementation when the bitmap dimensions are multiples of 128. In such cases, variable-length integer should be encoded as 2 bytes, not 1.

I've never contributed to Qt so I don't know where am I supposed to send the patch... It's actually very simple:


diff --git a/src/plugins/imageformats/wbmp/qwbmphandler.cpp b/src/plugins/imageformats/wbmp/qwbmphandler.cpp
index cd9b04a..d2dec87 100644
--- a/src/plugins/imageformats/wbmp/qwbmphandler.cpp
+++ b/src/plugins/imageformats/wbmp/qwbmphandler.cpp
@@ -81,6 +81,7 @@ static bool readMultiByteInt(QIODevice *iodev, quint32 *num)

 static bool writeMultiByteInt(QIODevice *iodev, quint32 num)
 {
+    quint8 width = 1;
     quint64 tmp = num & 0x7F;
     num >>= 7;

@@ -88,13 +89,15 @@ static bool writeMultiByteInt(QIODevice *iodev, quint32 num)
         quint8 c = num & 0x7F;
         num = num >> 7;
         tmp = (tmp << 8) | (c | 0x80);
+        width += 1;
     }

-    while (tmp) {
+    while (width) {
         quint8 c = tmp & 0xFF;
         if (!iodev->putChar(c))
             return false;
         tmp >>= 8;
+        width -= 1;
     }
     return true;
 }

cheers
--
Michał 'Khorne' Lowas-Rzechonek
Social Bicycles Inc.
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development

Reply via email to