| 369 | } |
| 370 | |
| 371 | txInteger fxArgToByteLength(txMachine* the, txInteger argi, txInteger length) |
| 372 | { |
| 373 | txSlot *arg = mxArgv(argi); |
| 374 | if ((mxArgc > argi) && (arg->kind != XS_UNDEFINED_KIND)) { |
| 375 | txNumber value; |
| 376 | if (XS_INTEGER_KIND == arg->kind) { |
| 377 | txInteger value = arg->value.integer; |
| 378 | if (value < 0) |
| 379 | mxRangeError("byteLength < 0"); |
| 380 | return value; |
| 381 | } |
| 382 | value = c_trunc(fxToNumber(the, arg)); |
| 383 | if (c_isnan(value)) |
| 384 | return 0; |
| 385 | if (value < 0) |
| 386 | mxRangeError("byteLength < 0"); |
| 387 | if (0x7FFFFFFF < value) |
| 388 | mxRangeError("byteLength too big"); |
| 389 | return (txInteger)value; |
| 390 | } |
| 391 | return length; |
| 392 | } |
| 393 | |
| 394 | txS8 fxArgToSafeByteLength(txMachine* the, txInteger argi, txInteger length) |
| 395 | { |
no test coverage detected