Tables assume network byte order for 16 bit forms, so 'S' packing
Nick Ing-Simmons [Sun, 8 Oct 2000 13:16:33 +0000 (13:16 +0000)]
is not right thing to do on (e.g. x86). Network order is also "right" for
X fonts.

p4raw-id: //depot/perl@7168

ext/Encode/Encode.pm

index 9d5e07f..8ba7232 100644 (file)
@@ -469,9 +469,9 @@ sub name { shift->{'Name'} }
 
 sub rep_S { 'C' }
 
-sub rep_D { 'S' }
+sub rep_D { 'n' }
 
-sub rep_M { ($_[0] > 255) ? 'S' : 'C' }
+sub rep_M { ($_[0] > 255) ? 'n' : 'C' }
 
 sub representation
 {
@@ -542,7 +542,7 @@ sub toUnicode
  my $uni   = '';
  while (length($str))
   {
-   my $code = unpack('S',substr($str,0,2,''));
+   my $code = unpack('n',substr($str,0,2,'')) & 0xffff;
    $uni .= chr($code);
   }
  $_[1] = $str if $chk;
@@ -562,7 +562,7 @@ sub fromUnicode
      last if ($chk);
      $x = 0;
     }
-   $str .= pack('S',$x);
+   $str .= pack('n',$x);
   }
  $_[1] = $uni if $chk;
  return $str;