--- 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);