--- a/WinWorkstation.st Mon Sep 17 11:07:16 2001 +0200
+++ b/WinWorkstation.st Mon Sep 17 11:22:18 2001 +0200
@@ -12631,7 +12631,7 @@
/* Unicode */
if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
- int n, len, realLen;
+ int nRemain, len, realLen;
hClip = OpenClipboard(NULL);
if (hClip) {
@@ -12645,49 +12645,53 @@
* see how much we really need (when CRLF is replaced by LF)
* and if result is really Unicode ...
*/
- for (realLen = 0, n=len, w_p=w_src; n; ) {
+ for (realLen = 0, nRemain=len, w_p=w_src; nRemain; ) {
WIDECHAR w_ch;
- w_ch = *w_p++; n--; realLen++;
+ w_ch = *w_p++; nRemain--; realLen++;
if ((unsigned) w_ch > 0xFF) {
needUnicode = 1;
}
if (w_ch == 0x0D) {
- if (n && (*w_p == 0x0A)) {
- w_p++; n--;
- }
- }
- }
-printf("reallen = %d\n; needUnicode=%d", len, needUnicode);
+ if (nRemain && (*w_p == 0x0A)) {
+ w_p++; nRemain--;
+ }
+ }
+ }
+printf("reallen = %d\n; needUnicode=%d", realLen, needUnicode);
if (! needUnicode) {
s = __MKEMPTYSTRING(realLen);
- for (n=0, p = __stringVal(s); len; ) {
- unsigned char ch;
-
- *p = ch = *w_src++;
- len--;
- if (len && (ch == 0x0D) && (*w_src == 0x0A)) {
- *p = 0x0A;
- w_src++;
+ if (s != nil) {
+ for (p = __stringVal(s); len; ) {
+ unsigned char ch;
+
+ *p = ch = *w_src++;
len--;
- }
- p++;
- }
- *p++ = '\0';
+ if (len && (ch == 0x0D) && (*w_src == 0x0A)) {
+ *p = 0x0A;
+ w_src++;
+ len--;
+ }
+ p++;
+ }
+ }
} else {
s = __MKBYTEARRAY(realLen * 2);
- __qClass(s) = @global(UnicodeString);
- for (n=0, w_p = (WIDECHAR *)__stringVal(s); len; ) {
- WIDECHAR w_ch;
-
- *w_p = w_ch = *w_src++;
- len--;
- if (len && (w_ch == 0x0D) && (*w_src == 0x0A)) {
- *w_p = 0x0A;
- w_src++;
+ if (s != nil) {
+ __qClass(s) = @global(UnicodeString);
+ for (w_p = (WIDECHAR *)__stringVal(s); len; ) {
+ WIDECHAR w_ch;
+
+ *w_p = w_ch = *w_src++;
+printf("conv %x\n", w_ch);
len--;
- }
- w_p++;
+ if (len && (w_ch == 0x0D) && (*w_src == 0x0A)) {
+ *w_p = 0x0A;
+ w_src++;
+ len--;
+ }
+ w_p++;
+ }
}
}
GlobalUnlock(hData);
@@ -12698,7 +12702,7 @@
/* check for format CF_TEXT */
if (IsClipboardFormatAvailable(CF_TEXT)) {
- int n, len, realLen;
+ int nRemain, len, realLen;
hClip = OpenClipboard(NULL);
if (hClip) {
@@ -12707,28 +12711,30 @@
len = src ? strlen(src) : 0;
/* see how much we really need (when CRLF is replaced by LF) */
- for (realLen = 0, n=len, p=src; n; ) {
+ for (realLen = 0, nRemain=len, p=src; nRemain; ) {
unsigned char ch;
- ch = *p++; n--; realLen++;
+ ch = *p++; nRemain--; realLen++;
if (ch == 0x0D) {
if (n && (*p == 0x0A)) {
- p++; n--;
+ p++; nRemain--;
}
}
}
s = __MKEMPTYSTRING(realLen);
- for (n=0, p=__stringVal(s); len; ) {
- unsigned char ch;
-
- *p = ch = *src++;
- len--;
- if (len && (ch == 0x0D) && (*src == 0x0A)) {
- *p = 0x0A;
- src++;
+ if (s != nil) {
+ for (p=__stringVal(s); len; ) {
+ unsigned char ch;
+
+ *p = ch = *src++;
len--;
- }
- p++;
+ if (len && (ch == 0x0D) && (*src == 0x0A)) {
+ *p = 0x0A;
+ src++;
+ len--;
+ }
+ p++;
+ }
}
GlobalUnlock(hData);
CloseClipboard();
@@ -13904,6 +13910,6 @@
!WinWorkstation class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.194 2001-09-17 09:07:16 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.195 2001-09-17 09:22:18 cg Exp $'
! !
WinWorkstation initialize!