avoid dead code in i_ft2_glyph_name()
authorTony Cook <tony@develop-help.com>
Wed, 2 Jan 2019 08:04:33 +0000 (19:04 +1100)
committerTony Cook <tony@develop-help.com>
Wed, 2 Jan 2019 08:04:33 +0000 (19:04 +1100)
Changes
FT2/Changes
FT2/FT2.pm
FT2/FT2.xs
FT2/t/t10ft2.t

diff --git a/Changes b/Changes
index fde0e81..0fa06a2 100644 (file)
--- a/Changes
+++ b/Changes
@@ -69,6 +69,9 @@ High severity:
  - avoid dead code in i_get_anonymous_color_histo(), which is the
    implementation of getcolorusage().  CID 185327.
 
  - avoid dead code in i_get_anonymous_color_histo(), which is the
    implementation of getcolorusage().  CID 185327.
 
+ - avoid dead code in i_ft2_glyph_name(), which is the implementation
+   of glyph_names() for FT2.  CID 185342.
+
 Imager 1.008 - 31 Dec 2018
 ============
 
 Imager 1.008 - 31 Dec 2018
 ============
 
index 3b7b1ca..8d6b5e1 100644 (file)
@@ -1,3 +1,9 @@
+Imager-Font-FT2 0.95
+====================
+
+ - avoid dead code in i_ft2_glyph_name(), which is the implementation
+   of glyph_names().  CID 185342.
+
 Imager-Font-FT2 0.94
 ====================
 
 Imager-Font-FT2 0.94
 ====================
 
index e89b147..93cd707 100644 (file)
@@ -6,7 +6,7 @@ use vars qw($VERSION @ISA);
 @ISA = qw(Imager::Font);
 
 BEGIN {
 @ISA = qw(Imager::Font);
 
 BEGIN {
-  $VERSION = "0.95";
+  $VERSION = "0.96";
 
   require XSLoader;
   XSLoader::load('Imager::Font::FT2', $VERSION);
 
   require XSLoader;
   XSLoader::load('Imager::Font::FT2', $VERSION);
index 7b9a8b9..dd93442 100644 (file)
@@ -303,17 +303,15 @@ i_ft2_glyph_name(handle, text_sv, utf8 = 0, reliable_only = 1)
             ch = *text++;
             --len;
           }
             ch = *text++;
             --len;
           }
-          EXTEND(SP, count+1);
+          EXTEND(SP, 1);
           if (i_ft2_glyph_name(handle, ch, name, sizeof(name), 
                                          reliable_only)) {
           if (i_ft2_glyph_name(handle, ch, name, sizeof(name), 
                                          reliable_only)) {
-            ST(count) = sv_2mortal(newSVpv(name, 0));
+            PUSHs(sv_2mortal(newSVpv(name, 0)));
           }
           else {
           }
           else {
-            ST(count) = &PL_sv_undef;
+            PUSHs(&PL_sv_undef);
           }
           }
-         ++count;
         }
         }
-       XSRETURN(count);
 
 int
 i_ft2_can_do_glyph_names()
 
 int
 i_ft2_can_do_glyph_names()
index af96545..4643f9d 100644 (file)
@@ -1,6 +1,6 @@
 #!perl -w
 use strict;
 #!perl -w
 use strict;
-use Test::More tests => 204;
+use Test::More;
 use Cwd qw(getcwd abs_path);
 
 use Imager qw(:all);
 use Cwd qw(getcwd abs_path);
 
 use Imager qw(:all);
@@ -332,6 +332,10 @@ SKIP:
       my @names = $exfont->glyph_names(string=>$text,
                                        utf8=>1, reliable_only=>0);
       is($names[0], "hyphentwo", "check utf8 glyph name");
       my @names = $exfont->glyph_names(string=>$text,
                                        utf8=>1, reliable_only=>0);
       is($names[0], "hyphentwo", "check utf8 glyph name");
+
+      # make sure we get an empty list with bad utf8
+      my @bad = $exfont->glyph_names(string => "ab\xC0", utf8 => 1);
+      is(@bad, 0, "properly got empty result with bad utf8");
     }
   }
 
     }
   }
 
@@ -595,6 +599,8 @@ SKIP:
 
 Imager->close_log();
 
 
 Imager->close_log();
 
+done_testing();
+
 END {
   unless ($ENV{IMAGER_KEEP_FILES}) {
     unlink map "testout/$_", @test_output;
 END {
   unless ($ENV{IMAGER_KEEP_FILES}) {
     unlink map "testout/$_", @test_output;