]> granicus.if.org Git - graphviz/commitdiff
fix incorrect colors in Lefty postscript output
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 3 Feb 2021 03:40:06 +0000 (19:40 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 13 Feb 2021 20:49:30 +0000 (12:49 -0800)
This code intended to print color data to its output file in postscript (PS)
format. However it miscalculated the low nibble of each non-zero byte as 1 due
to an incorrect operator. This may have not been noticed in the resulting image
due to low precision. This was exposed by the compiler flag -Wlogical-op. Fixes
#1927.

At first glance, it looks like this could be written without shifting and
masking at all by simply printing the byte padded to width 2, but maybe I am
missing some subtlety.

CHANGELOG.md
cmd/lefty/ws/x11/gpcanvas.c

index cc50ca5964d10e87eac4c1eac81183c2f0cb3e49..0dfb7920b672ef8d3d43d3328ea8b5c3d4554add 100644 (file)
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+### Fixed
+- typos in gpcanvas.c #1927
+
 ## [2.46.0] - 2021-02-13
 
 ### Added
index 355457b34fbe4239d70e0f56394cceaa2d3a4650..00229e8c7cc4a9e10d3d3a4e13bdf714d33d704b 100644 (file)
@@ -699,11 +699,11 @@ int GPbitblt (
             bitmap->u.bits + 3 * ((int) bitmap->size.x * (br.o.y + y) + br.o.x)
         );
         for (x = 0; x < bs.x; x++) {
-            hi = (*s >> 4) & 15, lo = *s++ && 15;
+            hi = (*s >> 4) & 15, lo = *s++ & 15;
             fprintf (FP, "%x%x", hi, lo);
-            hi = (*s >> 4) & 15, lo = *s++ && 15;
+            hi = (*s >> 4) & 15, lo = *s++ & 15;
             fprintf (FP, "%x%x", hi, lo);
-            hi = (*s >> 4) & 15, lo = *s++ && 15;
+            hi = (*s >> 4) & 15, lo = *s++ & 15;
             fprintf (FP, "%x%x", hi, lo);
         }
         fprintf (FP, "\n");