From 9aa6ec4a7dc9b4c18cf189fa6f4d2c1540307046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Thu, 25 Feb 1999 00:27:11 +0100 Subject: [PATCH] Added support for byte-order reversed UCS2. Fixed typo. Rev: src/cpp.c:1.42 --- src/cpp.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/cpp.c b/src/cpp.c index 9e24c19d28..1de3ae8418 100644 --- a/src/cpp.c +++ b/src/cpp.c @@ -5,7 +5,7 @@ \*/ /* - * $Id: cpp.c,v 1.41 1999/02/24 01:50:20 grubba Exp $ + * $Id: cpp.c,v 1.42 1999/02/24 23:27:11 grubba Exp $ */ #include "global.h" #include "language.h" @@ -2123,12 +2123,20 @@ static struct pike_string *recode_string(struct pike_string *data) (!((unsigned char *)data->str)[1])) { /* 32bit Unicode (UCS4) */ } else { - /* 16bit Unicode */ + /* 16bit Unicode (UCS2) */ if ((!((unsigned char *)data->str)[1]) || (((unsigned char *)data->str)[1] == 0xfe)) { /* Reverse Byte-order */ + struct pike_string new_str = begin_shared_string(data->len); + int i; + for(i=0; i<data->len; i++) { + new_str->str[i^1] = data->str[i]; + } + new_str = end_shared_string(new_str); + free_string(data); + data = new_str; } - // Note: We lose the extra reference to data here. + /* Note: We lose the extra reference to data here. */ push_string(data); f_unicode_to_string(1); add_ref(data = sp[-1].u.string); -- GitLab