WinWorkstation.st
changeset 3503 572f841dce6f
parent 3502 250667f59792
child 3504 b53fe2fa6370
--- 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!