From 91fa51ce857de6201ded3e0aaa749edff2d58f6e Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Thu, 29 Oct 2009 20:00:12 +0000 Subject: [PATCH] Fixed character set conversion functions (STR #2268) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@6922 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- CHANGES | 1 + src/fl_encoding_latin1.cxx | 12 ++++++------ src/fl_encoding_mac_roman.cxx | 12 ++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGES b/CHANGES index f250b4683..cc5d390c8 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,6 @@ CHANGES IN FLTK 1.1.10 + - Fixed character set conversion functions (STR #2268) - Fixed image lib configure and fltk-config issues by backporting the image lib and zlib configure code from FLTK 1.3 (STR #2203) - Updated the bundled libpng to v1.2.40 (released Sep. 10, 2009) diff --git a/src/fl_encoding_latin1.cxx b/src/fl_encoding_latin1.cxx index 44f65334e..1ac5a63c2 100644 --- a/src/fl_encoding_latin1.cxx +++ b/src/fl_encoding_latin1.cxx @@ -78,8 +78,8 @@ static int n_buf = 0; const char *fl_latin1_to_local(const char *t, int n) { - if (n==-1) n = strlen(t); - if (n<=n_buf) { + if (n==-1) n = strlen(t)+1; + if (n>=n_buf) { n_buf = (n + 257) & 0x7fffff00; if (buf) free(buf); buf = (char*)malloc(n_buf); @@ -89,9 +89,9 @@ const char *fl_latin1_to_local(const char *t, int n) for ( ; n>0; n--) { uchar c = *src++; if (c>127) - *dst = latin2roman[c-128]; + *dst++ = latin2roman[c-128]; else - *dst = c; + *dst++ = c; } //*dst = 0; // this would be wrong! return buf; @@ -99,8 +99,8 @@ const char *fl_latin1_to_local(const char *t, int n) const char *fl_local_to_latin1(const char *t, int n) { - if (n==-1) n = strlen(t); - if (n<=n_buf) { + if (n==-1) n = strlen(t)+1; + if (n>=n_buf) { n_buf = (n + 257) & 0x7fffff00; if (buf) free(buf); buf = (char*)malloc(n_buf); diff --git a/src/fl_encoding_mac_roman.cxx b/src/fl_encoding_mac_roman.cxx index 6f28fb01f..17e5fedc7 100644 --- a/src/fl_encoding_mac_roman.cxx +++ b/src/fl_encoding_mac_roman.cxx @@ -87,8 +87,8 @@ static int n_buf = 0; const char *fl_local_to_mac_roman(const char *t, int n) { - if (n==-1) n = strlen(t); - if (n<=n_buf) { + if (n==-1) n = strlen(t)+1; + if (n>=n_buf) { n_buf = (n + 257) & 0x7fffff00; if (buf) free(buf); buf = (char*)malloc(n_buf); @@ -98,9 +98,9 @@ const char *fl_local_to_mac_roman(const char *t, int n) for ( ; n>0; n--) { uchar c = *src; if (c>127) - *dst = latin2roman[c-128]; + *dst++ = latin2roman[c-128]; else - *dst = c; + *dst++ = c; } //*dst = 0; // this would be wrong! return buf; @@ -108,8 +108,8 @@ const char *fl_local_to_mac_roman(const char *t, int n) const char *fl_mac_roman_to_local(const char *t, int n) { - if (n==-1) n = strlen(t); - if (n<=n_buf) { + if (n==-1) n = strlen(t)+1; + if (n>=n_buf) { n_buf = (n + 257) & 0x7fffff00; if (buf) free(buf); buf = (char*)malloc(n_buf);