ExternalLibraryFunction.st
changeset 24078 13363abcd11f
parent 24077 1163f3c0012e
child 24097 fe2d568b25c9
--- a/ExternalLibraryFunction.st	Sat Apr 13 18:35:53 2019 +0200
+++ b/ExternalLibraryFunction.st	Sat Apr 13 18:42:42 2019 +0200
@@ -1743,12 +1743,14 @@
 	    }
 	    argValuePtr = &(__argValues[i].iVal);
 
-	} else if (typeSymbol == @symbol(uint8)) {
+	} else if ((typeSymbol == @symbol(uint8)) || (typeSymbol == @symbol(char))) {
 	    thisType = TYPE_UINT8;
 	    if (arg == __STX_true) {
 		__argValues[i].iVal = 1;
 	    } else if (arg == __STX_false) {
 		__argValues[i].iVal = 0;
+	    } else if (__isCharacter(arg)) {
+		__argValues[i].iVal = __intVal(__characterVal(arg));
 	    } else {
 		if (! __isSmallInteger(arg)) {
 		    DEBUGCODE_IF( @global(Verbose), {
@@ -1791,18 +1793,22 @@
 
 	} else if (typeSymbol == @symbol(uint16)) {
 	    thisType = TYPE_UINT16;
-	    if (! __isSmallInteger(arg)) {
-		DEBUGCODE_IF( @global(Verbose), {
-		    printf("invalidArgument: arg%d uint16 value out of range [%d]\n", i+1, __LINE__);
-		})
-		__FAIL__(@symbol(InvalidArgument))
-	    }
-	    __argValues[i].iVal = __intVal(arg);
-	    if (((unsigned)(__argValues[i].iVal)) > 0xFFFF) {
-		DEBUGCODE_IF( @global(Verbose), {
-		    printf("invalidArgument: arg%d uint16 value out of range [%d]\n", i+1, __LINE__);
-		})
-		__FAIL__(@symbol(InvalidArgument))
+	    if (__isCharacter(arg)) {
+		__argValues[i].iVal = __intVal(__characterVal(arg));
+	    } else {
+		if (! __isSmallInteger(arg)) {
+		    DEBUGCODE_IF( @global(Verbose), {
+			printf("invalidArgument: arg%d uint16 value out of range [%d]\n", i+1, __LINE__);
+		    })
+		    __FAIL__(@symbol(InvalidArgument))
+		}
+		__argValues[i].iVal = __intVal(arg);
+		if (((unsigned)(__argValues[i].iVal)) > 0xFFFF) {
+		    DEBUGCODE_IF( @global(Verbose), {
+			printf("invalidArgument: arg%d uint16 value out of range [%d]\n", i+1, __LINE__);
+		    })
+		    __FAIL__(@symbol(InvalidArgument))
+		}
 	    }
 	    argValuePtr = &(__argValues[i].iVal);