@@ -83,21 +83,18 @@ static struct {
83
83
{12001 , "UCS4BE" },
84
84
{12001 , "CP12001" },
85
85
86
- //#ifndef GLIB_COMPILATION
87
- // /*
88
- // * Default is big endian.
89
- // * See rfc2781 4.3 Interpreting text labelled as UTF-16.
90
- // */
91
- // {1201, "UTF16"},
92
- // {1201, "UTF-16"},
93
- // {1201, "UCS2"},
94
- // {1201, "UCS-2"},
95
- // {12001, "UTF32"},
96
- // {12001, "UTF-32"},
97
- // {12001, "UCS-4"},
98
- // {12001, "UCS4"},
99
- //#else
100
- /* Default is little endian, because the platform is */
86
+ #ifdef BIG_ENDIAN
87
+ // Big endian...
88
+ {1201 , "UTF16" },
89
+ {1201 , "UTF-16" },
90
+ {1201 , "UCS2" },
91
+ {1201 , "UCS-2" },
92
+ {12001 , "UTF32" },
93
+ {12001 , "UTF-32" },
94
+ {12001 , "UCS-4" },
95
+ {12001 , "UCS4" },
96
+ #else
97
+ // Little endian variants
101
98
{1200 , "UTF-16" },
102
99
{1200 , "UTF16" },
103
100
{1200 , "UCS-2" },
@@ -106,7 +103,7 @@ static struct {
106
103
{12000 , "UTF32" },
107
104
{12000 , "UCS-4" },
108
105
{12000 , "UCS4" },
109
- // #endif
106
+ #endif
110
107
111
108
/* copy from libiconv `iconv -l` */
112
109
/* !IsValidCodePage(367) */
@@ -231,6 +228,7 @@ static struct {
231
228
{936 , "WINDOWS-936" },
232
229
233
230
{950 , "CP950" },
231
+ {950 , "BIG-5" },
234
232
{950 , "BIG5" },
235
233
{950 , "BIG5HKSCS" },
236
234
{950 , "BIG5-HKSCS" },
@@ -319,31 +317,32 @@ static struct {
319
317
/* 709 Arabic (ASMO-449+, BCON V4) */
320
318
/* 710 Arabic - Transparent Arabic */
321
319
{720 , "DOS-720" }, /* Arabic (Transparent ASMO); Arabic (DOS) */
322
- {737 , "ibm737 " }, /* OEM Greek (formerly 437G); Greek (DOS) */
323
- {775 , "ibm775 " }, /* OEM Baltic; Baltic (DOS) */
324
- {850 , "ibm850 " }, /* OEM Multilingual Latin 1; Western European (DOS) */
325
- {852 , "ibm852 " }, /* OEM Latin 2; Central European (DOS) */
320
+ {737 , "IBM737 " }, /* OEM Greek (formerly 437G); Greek (DOS) */
321
+ {775 , "IBM775 " }, /* OEM Baltic; Baltic (DOS) */
322
+ {850 , "IBM850 " }, /* OEM Multilingual Latin 1; Western European (DOS) */
323
+ {852 , "IBM852 " }, /* OEM Latin 2; Central European (DOS) */
326
324
{855 , "IBM855" }, /* OEM Cyrillic (primarily Russian) */
327
- {857 , "ibm857 " }, /* OEM Turkish; Turkish (DOS) */
325
+ {857 , "IBM857 " }, /* OEM Turkish; Turkish (DOS) */
328
326
{858 , "IBM00858" }, /* OEM Multilingual Latin 1 + Euro symbol */
329
327
{860 , "IBM860" }, /* OEM Portuguese; Portuguese (DOS) */
330
- {861 , "ibm861 " }, /* OEM Icelandic; Icelandic (DOS) */
328
+ {861 , "IBM861 " }, /* OEM Icelandic; Icelandic (DOS) */
331
329
{862 , "DOS-862" }, /* OEM Hebrew; Hebrew (DOS) */
332
330
{863 , "IBM863" }, /* OEM French Canadian; French Canadian (DOS) */
333
331
{864 , "IBM864" }, /* OEM Arabic; Arabic (864) */
334
332
{865 , "IBM865" }, /* OEM Nordic; Nordic (DOS) */
335
- {866 , "cp866 " }, /* OEM Russian; Cyrillic (DOS) */
336
- {869 , "ibm869 " }, /* OEM Modern Greek; Greek, Modern (DOS) */
333
+ {866 , "CP866 " }, /* OEM Russian; Cyrillic (DOS) */
334
+ {869 , "IBM869 " }, /* OEM Modern Greek; Greek, Modern (DOS) */
337
335
{870 , "IBM870" }, /* IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2 */
338
- {874 , "windows-874" }, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */
339
- {875 , "cp875" }, /* IBM EBCDIC Greek Modern */
340
- {932 , "shift_jis" }, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */
341
- {932 , "shift-jis" }, /* alternative name for it */
342
- {936 , "gb2312" }, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */
343
- {949 , "ks_c_5601-1987" }, /* ANSI/OEM Korean (Unified Hangul Code) */
344
- {950 , "big5" }, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */
345
- {950 , "big5hkscs" }, /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */
346
- {950 , "big5-hkscs" }, /* alternative name for it */
336
+ {874 , "WINDOWS-874" }, /* ANSI/OEM Thai (same as 28605, ISO 8859-15); Thai (Windows) */
337
+ {875 , "CP875" }, /* IBM EBCDIC Greek Modern */
338
+ {932 , "SHIFT_JIS" }, /* ANSI/OEM Japanese; Japanese (Shift-JIS) */
339
+ {932 , "SHIFT-JIS" }, /* alternative name for it */
340
+ {936 , "GB2312" }, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */
341
+ {949 , "KS_C_5601-1987" }, /* ANSI/OEM Korean (Unified Hangul Code) */
342
+ {950 , "BIG-5" }, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */
343
+ {950 , "BIG5" },
344
+ {950 , "BIG5-HKSCS" }, /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */
345
+ {950 , "BIG5HKSCS" }, /* alternative name for it */
347
346
{1026 , "IBM1026" }, /* IBM EBCDIC Turkish (Latin 5) */
348
347
{1047 , "IBM01047" }, /* IBM EBCDIC Latin 1/Open System */
349
348
{1140 , "IBM01140" }, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */
@@ -365,8 +364,8 @@ static struct {
365
364
{1256 , "windows-1256" }, /* ANSI Arabic; Arabic (Windows) */
366
365
{1257 , "windows-1257" }, /* ANSI Baltic; Baltic (Windows) */
367
366
{1258 , "windows-1258" }, /* ANSI/OEM Vietnamese; Vietnamese (Windows) */
368
- {1361 , "Johab " }, /* Korean (Johab) */
369
- {10000 , "macintosh " }, /* MAC Roman; Western European (Mac) */
367
+ {1361 , "JOHAB " }, /* Korean (Johab) */
368
+ {10000 , "MACINTOSH " }, /* MAC Roman; Western European (Mac) */
370
369
{10001 , "x-mac-japanese" }, /* Japanese (Mac) */
371
370
{10002 , "x-mac-chinesetrad" }, /* MAC Traditional Chinese (Big5); Chinese Traditional (Mac) */
372
371
{10003 , "x-mac-korean" }, /* Korean (Mac) */
@@ -392,7 +391,7 @@ static struct {
392
391
{20106 , "x-IA5-German" }, /* IA5 German (7-bit) */
393
392
{20107 , "x-IA5-Swedish" }, /* IA5 Swedish (7-bit) */
394
393
{20108 , "x-IA5-Norwegian" }, /* IA5 Norwegian (7-bit) */
395
- {20127 , "us-ascii " }, /* US-ASCII (7-bit) */
394
+ {20127 , "US-ASCII " }, /* US-ASCII (7-bit) */
396
395
{20261 , "x-cp20261" }, /* T.61 */
397
396
{20269 , "x-cp20269" }, /* ISO 6937 Non-Spacing Accent */
398
397
{20273 , "IBM273" }, /* IBM EBCDIC Germany */
@@ -408,71 +407,71 @@ static struct {
408
407
{20424 , "IBM424" }, /* IBM EBCDIC Hebrew */
409
408
{20833 , "x-EBCDIC-KoreanExtended" }, /* IBM EBCDIC Korean Extended */
410
409
{20838 , "IBM-Thai" }, /* IBM EBCDIC Thai */
411
- {20866 , "koi8-r " }, /* Russian (KOI8-R); Cyrillic (KOI8-R) */
410
+ {20866 , "KOI8-R " }, /* Russian (KOI8-R); Cyrillic (KOI8-R) */
412
411
{20871 , "IBM871" }, /* IBM EBCDIC Icelandic */
413
412
{20880 , "IBM880" }, /* IBM EBCDIC Cyrillic Russian */
414
413
{20905 , "IBM905" }, /* IBM EBCDIC Turkish */
415
414
{20924 , "IBM00924" }, /* IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) */
416
415
{20932 , "EUC-JP" }, /* Japanese (JIS 0208-1990 and 0121-1990) */
417
416
{20936 , "x-cp20936" }, /* Simplified Chinese (GB2312); Chinese Simplified (GB2312-80) */
418
417
{20949 , "x-cp20949" }, /* Korean Wansung */
419
- {21025 , "cp1025 " }, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */
418
+ {21025 , "CP1025 " }, /* IBM EBCDIC Cyrillic Serbian-Bulgarian */
420
419
/* 21027 (deprecated) */
421
- {21866 , "koi8-u " }, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */
422
- {28591 , "iso -8859-1" }, /* ISO 8859-1 Latin 1; Western European (ISO) */
423
- {28591 , "iso8859 -1" }, /* ISO 8859-1 Latin 1; Western European (ISO) */
424
- {28591 , "iso_8859 -1" },
425
- {28591 , "iso_8859_1 " },
426
- {28592 , "iso -8859-2" }, /* ISO 8859-2 Central European; Central European (ISO) */
427
- {28592 , "iso8859 -2" }, /* ISO 8859-2 Central European; Central European (ISO) */
428
- {28592 , "iso_8859 -2" },
429
- {28592 , "iso_8859_2 " },
430
- {28593 , "iso -8859-3" }, /* ISO 8859-3 Latin 3 */
431
- {28593 , "iso8859 -3" }, /* ISO 8859-3 Latin 3 */
432
- {28593 , "iso_8859 -3" },
433
- {28593 , "iso_8859_3 " },
434
- {28594 , "iso -8859-4" }, /* ISO 8859-4 Baltic */
435
- {28594 , "iso8859 -4" }, /* ISO 8859-4 Baltic */
436
- {28594 , "iso_8859 -4" },
437
- {28594 , "iso_8859_4 " },
438
- {28595 , "iso -8859-5" }, /* ISO 8859-5 Cyrillic */
439
- {28595 , "iso8859 -5" }, /* ISO 8859-5 Cyrillic */
440
- {28595 , "iso_8859 -5" },
441
- {28595 , "iso_8859_5 " },
442
- {28596 , "iso -8859-6" }, /* ISO 8859-6 Arabic */
443
- {28596 , "iso8859 -6" }, /* ISO 8859-6 Arabic */
444
- {28596 , "iso_8859 -6" },
445
- {28596 , "iso_8859_6 " },
446
- {28597 , "iso -8859-7" }, /* ISO 8859-7 Greek */
447
- {28597 , "iso8859 -7" }, /* ISO 8859-7 Greek */
448
- {28597 , "iso_8859 -7" },
449
- {28597 , "iso_8859_7 " },
450
- {28598 , "iso -8859-8" }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */
451
- {28598 , "iso8859 -8" }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */
452
- {28598 , "iso_8859 -8" },
453
- {28598 , "iso_8859_8 " },
454
- {28599 , "iso -8859-9" }, /* ISO 8859-9 Turkish */
455
- {28599 , "iso8859 -9" }, /* ISO 8859-9 Turkish */
456
- {28599 , "iso_8859 -9" },
457
- {28599 , "iso_8859_9 " },
458
- {28603 , "iso -8859-13" }, /* ISO 8859-13 Estonian */
459
- {28603 , "iso8859 -13" }, /* ISO 8859-13 Estonian */
460
- {28603 , "iso_8859 -13" },
461
- {28603 , "iso_8859_13 " },
462
- {28605 , "iso -8859-15" }, /* ISO 8859-15 Latin 9 */
463
- {28605 , "iso8859 -15" }, /* ISO 8859-15 Latin 9 */
464
- {28605 , "iso_8859 -15" },
465
- {28605 , "iso_8859_15 " },
420
+ {21866 , "KOI8-U " }, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */
421
+ {28591 , "ISO -8859-1" }, /* ISO 8859-1 Latin 1; Western European (ISO) */
422
+ {28591 , "ISO8859 -1" }, /* ISO 8859-1 Latin 1; Western European (ISO) */
423
+ {28591 , "ISO_8859 -1" },
424
+ {28591 , "ISO_8859_1 " },
425
+ {28592 , "ISO -8859-2" }, /* ISO 8859-2 Central European; Central European (ISO) */
426
+ {28592 , "ISO8859 -2" }, /* ISO 8859-2 Central European; Central European (ISO) */
427
+ {28592 , "ISO_8859 -2" },
428
+ {28592 , "ISO_8859_2 " },
429
+ {28593 , "ISO -8859-3" }, /* ISO 8859-3 Latin 3 */
430
+ {28593 , "ISO8859 -3" }, /* ISO 8859-3 Latin 3 */
431
+ {28593 , "ISO_8859 -3" },
432
+ {28593 , "ISO_8859_3 " },
433
+ {28594 , "ISO -8859-4" }, /* ISO 8859-4 Baltic */
434
+ {28594 , "ISO8859 -4" }, /* ISO 8859-4 Baltic */
435
+ {28594 , "ISO_8859 -4" },
436
+ {28594 , "ISO_8859_4 " },
437
+ {28595 , "ISO -8859-5" }, /* ISO 8859-5 Cyrillic */
438
+ {28595 , "ISO8859 -5" }, /* ISO 8859-5 Cyrillic */
439
+ {28595 , "ISO_8859 -5" },
440
+ {28595 , "ISO_8859_5 " },
441
+ {28596 , "ISO -8859-6" }, /* ISO 8859-6 Arabic */
442
+ {28596 , "ISO8859 -6" }, /* ISO 8859-6 Arabic */
443
+ {28596 , "ISO_8859 -6" },
444
+ {28596 , "ISO_8859_6 " },
445
+ {28597 , "ISO -8859-7" }, /* ISO 8859-7 Greek */
446
+ {28597 , "ISO8859 -7" }, /* ISO 8859-7 Greek */
447
+ {28597 , "ISO_8859 -7" },
448
+ {28597 , "ISO_8859_7 " },
449
+ {28598 , "ISO -8859-8" }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */
450
+ {28598 , "ISO8859 -8" }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */
451
+ {28598 , "ISO_8859 -8" },
452
+ {28598 , "ISO_8859_8 " },
453
+ {28599 , "ISO -8859-9" }, /* ISO 8859-9 Turkish */
454
+ {28599 , "ISO8859 -9" }, /* ISO 8859-9 Turkish */
455
+ {28599 , "ISO_8859 -9" },
456
+ {28599 , "ISO_8859_9 " },
457
+ {28603 , "ISO -8859-13" }, /* ISO 8859-13 Estonian */
458
+ {28603 , "ISO8859 -13" }, /* ISO 8859-13 Estonian */
459
+ {28603 , "ISO_8859 -13" },
460
+ {28603 , "ISO_8859_13 " },
461
+ {28605 , "ISO -8859-15" }, /* ISO 8859-15 Latin 9 */
462
+ {28605 , "ISO8859 -15" }, /* ISO 8859-15 Latin 9 */
463
+ {28605 , "ISO_8859 -15" },
464
+ {28605 , "ISO_8859_15 " },
466
465
{29001 , "x-Europa" }, /* Europa 3 */
467
- {38598 , "iso -8859-8-i " }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */
468
- {38598 , "iso8859 -8-i " }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */
469
- {38598 , "iso_8859 -8-i " },
470
- {38598 , "iso_8859_8-i " },
471
- {50220 , "iso -2022-jp " }, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */
466
+ {38598 , "ISO -8859-8-I " }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */
467
+ {38598 , "ISO8859 -8-I " }, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */
468
+ {38598 , "ISO_8859 -8-I " },
469
+ {38598 , "ISO_8859_8-I " },
470
+ {50220 , "ISO -2022-JP " }, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */
472
471
{50221 , "csISO2022JP" }, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */
473
- {50222 , "iso -2022-jp " }, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */
474
- {50225 , "iso -2022-kr " }, /* ISO 2022 Korean */
475
- {50225 , "iso2022-kr " }, /* ISO 2022 Korean */
472
+ {50222 , "ISO -2022-JP " }, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */
473
+ {50225 , "ISO -2022-KR " }, /* ISO 2022 Korean */
474
+ {50225 , "ISO2022-KR " }, /* ISO 2022 Korean */
476
475
{50227 , "x-cp50227" }, /* ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022) */
477
476
/* 50229 ISO 2022 Traditional Chinese */
478
477
/* 50930 EBCDIC Japanese (Katakana) Extended */
@@ -482,11 +481,11 @@ static struct {
482
481
/* 50936 EBCDIC Simplified Chinese */
483
482
/* 50937 EBCDIC US-Canada and Traditional Chinese */
484
483
/* 50939 EBCDIC Japanese (Latin) Extended and Japanese */
485
- {51932 , "euc-jp " }, /* EUC Japanese */
484
+ {51932 , "EUC-JP " }, /* EUC Japanese */
486
485
{51936 , "EUC-CN" }, /* EUC Simplified Chinese; Chinese Simplified (EUC) */
487
- {51949 , "euc-kr " }, /* EUC Korean */
486
+ {51949 , "EUC-KR " }, /* EUC Korean */
488
487
/* 51950 EUC Traditional Chinese */
489
- {52936 , "hz-gb -2312" }, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */
488
+ {52936 , "HZ-GB -2312" }, /* HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ) */
490
489
{54936 , "GB18030" }, /* Windows XP and later: GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030) */
491
490
{57002 , "x-iscii-de" }, /* ISCII Devanagari */
492
491
{57003 , "x-iscii-be" }, /* ISCII Bengali */
@@ -523,7 +522,7 @@ static REBINT get_codepage_id(REBVAL *cp)
523
522
else if ('0' <= name [0 ] && name [0 ] <= '9' )
524
523
return atoi (cs_cast (name )); /* 123 */
525
524
526
- for (i = 0 ; codepage_alias [i ].name != NULL ; ++ i )
525
+ for (i = 0 ; codepage_alias [i ].name != NULL ; i ++ )
527
526
if (_stricmp (cs_cast (name ), codepage_alias [i ].name ) == 0 )
528
527
return codepage_alias [i ].codepage ;
529
528
#else
@@ -532,9 +531,10 @@ static REBINT get_codepage_id(REBVAL *cp)
532
531
else if ('0' <= name [0 ] && name [0 ] <= '9' )
533
532
return atoi (cs_cast (name )); /* 123 */
534
533
535
- for (i = 0 ; codepage_alias [i ].name != NULL ; ++ i )
534
+ for (i = 0 ; codepage_alias [i ].name != NULL ; i ++ ) {
536
535
if (strcasecmp (cs_cast (name ), codepage_alias [i ].name ) == 0 )
537
536
return codepage_alias [i ].codepage ;
537
+ }
538
538
#endif
539
539
return -1 ;
540
540
}
@@ -554,7 +554,7 @@ static REBYTE* get_codepage_name(REBVAL *cp)
554
554
555
555
//printf("get_codepage_name from: %d\n", id);
556
556
557
- for (i = 0 ; codepage_alias [i ].name != NULL ; ++ i ) {
557
+ for (i = 0 ; codepage_alias [i ].name != NULL ; i ++ ) {
558
558
if (codepage_alias [i ].codepage == id ) {
559
559
// printf("found: %s\n", codepage_alias[i].name);
560
560
return (REBYTE * )codepage_alias [i ].name ;
@@ -577,6 +577,27 @@ static REBYTE* get_codepage_name(REBVAL *cp)
577
577
data [i ] = (num >>8 ) | (num <<8 );
578
578
}
579
579
}
580
+ #else
581
+ /***********************************************************************
582
+ ** Some iconv versions accepts only some names!
583
+ ** For example on BSD `UTF-8` is accepted, but not `UTF8`.
584
+ ** This function converts the input into numeric ID (as used on Windows)
585
+ ** and than back to name, where prefered (supported) name should be first.
586
+ **
587
+ */ static REBYTE * norm_codepage_name (REBVAL * cp )
588
+ /*
589
+ ***********************************************************************/
590
+ {
591
+ REBINT id ;
592
+ REBYTE * name ;
593
+ id = get_codepage_id (cp );
594
+ if (id == -1 ) return NULL ;
595
+ for (int i = 0 ; codepage_alias [i ].name != NULL ; i ++ ) {
596
+ if (codepage_alias [i ].codepage == id )
597
+ return (REBYTE * )codepage_alias [i ].name ;
598
+ }
599
+ return NULL ;
600
+ }
580
601
#endif
581
602
582
603
/***********************************************************************
@@ -720,13 +741,20 @@ static REBYTE* get_codepage_name(REBVAL *cp)
720
741
size_t dst_size ;
721
742
size_t nread ;
722
743
REBCNT tail ;
723
- const char * fromcode = cs_cast (get_codepage_name (val_from ));
744
+
745
+ //TODO: currently only strings regisered in the aliases are supported
746
+ // but iconv may support more variants, so we could try to convert
747
+ // any given codepage names, and do normalization only when it fails!
748
+
749
+ const char * fromcode = cs_cast (norm_codepage_name (val_from ));
724
750
const char * tocode ;
725
751
int wide ;
726
752
727
- if (!fromcode ) Trap1 (RE_INVALID_ARG , val_from );
753
+ if (!fromcode ) {
754
+ Trap1 (RE_INVALID_ARG , val_from );
755
+ }
728
756
if (ref_to ) {
729
- tocode = cs_cast (get_codepage_name (val_to ));
757
+ tocode = cs_cast (norm_codepage_name (val_to ));
730
758
if (!tocode ) Trap1 (RE_INVALID_ARG , val_to );
731
759
wide = 1 ; // result is raw binary series
732
760
} else {
@@ -737,7 +765,7 @@ static REBYTE* get_codepage_name(REBVAL *cp)
737
765
cd = iconv_open (tocode , fromcode );
738
766
if (cd == (iconv_t )- 1 ) {
739
767
if (get_codepage_id (val_from ) < 0 ) Trap1 (RE_INVALID_ARG , val_from );
740
- if (get_codepage_id (val_to ) < 0 ) Trap1 (RE_INVALID_ARG , val_to );
768
+ if (ref_to && get_codepage_id (val_to ) < 0 ) Trap1 (RE_INVALID_ARG , val_to );
741
769
Trap0 (RE_FEATURE_NA );
742
770
}
743
771
0 commit comments