diff --git a/resources/images/exif/exif.go b/resources/images/exif/exif.go index 720d200c9..065c14355 100644 --- a/resources/images/exif/exif.go +++ b/resources/images/exif/exif.go @@ -227,7 +227,7 @@ func (e *exifWalker) Walk(f _exif.FieldName, tag *tiff.Tag) error { func nullString(in []byte) string { var rv bytes.Buffer for _, b := range in { - if unicode.IsPrint(rune(b)) { + if unicode.IsGraphic(rune(b)) { rv.WriteByte(b) } } diff --git a/resources/images/exif/exif_test.go b/resources/images/exif/exif_test.go index 12e3b7f71..69540ddf5 100644 --- a/resources/images/exif/exif_test.go +++ b/resources/images/exif/exif_test.go @@ -75,6 +75,20 @@ func TestExifPNG(t *testing.T) { c.Assert(err, qt.Not(qt.IsNil)) } +func TestIssue8079(t *testing.T) { + c := qt.New(t) + + f, err := os.Open(filepath.FromSlash("../../testdata/iss8079.jpg")) + c.Assert(err, qt.IsNil) + defer f.Close() + + d, err := NewDecoder() + c.Assert(err, qt.IsNil) + x, err := d.Decode(f) + c.Assert(err, qt.IsNil) + c.Assert(x.Tags["ImageDescription"], qt.Equals, "Città del Vaticano #nanoblock #vatican #vaticancity") +} + func BenchmarkDecodeExif(b *testing.B) { c := qt.New(b) f, err := os.Open(filepath.FromSlash("../../testdata/sunset.jpg")) diff --git a/resources/testdata/iss8079.jpg b/resources/testdata/iss8079.jpg new file mode 100644 index 000000000..a9049e81b Binary files /dev/null and b/resources/testdata/iss8079.jpg differ