Fix up linger direct use of hasKw in long_to_bytes
This commit is contained in:
parent
dcd1fafc85
commit
2b5df70d5a
@ -1942,34 +1942,15 @@ KRK_Method(long,bit_length) {
|
|||||||
|
|
||||||
static KrkValue long_to_bytes(KrkLong * val, size_t argc, const KrkValue argv[], int hasKw) {
|
static KrkValue long_to_bytes(KrkLong * val, size_t argc, const KrkValue argv[], int hasKw) {
|
||||||
static const char _method_name[] = "to_bytes";
|
static const char _method_name[] = "to_bytes";
|
||||||
/**
|
int length;
|
||||||
* @fn to_bytes(length: int, byteorder: str, *, signed: bool = False) -> bytes
|
const char * byteorder;
|
||||||
*
|
|
||||||
* @param length size of the bytes object to produce; restricted to an int; anything bigger
|
|
||||||
* is probably going to cause trouble for repring a result anyway, so, whatever...
|
|
||||||
* @param byteorder must be either 'little' or 'big'.
|
|
||||||
* @param signed needs to be a keyword arg because apparently that's how it is in Python...
|
|
||||||
* If a negative value is passed without @c signed=True an error will be raised.
|
|
||||||
*/
|
|
||||||
|
|
||||||
CHECK_ARG(1,int,krk_integer_type,length);
|
|
||||||
CHECK_ARG(2,str,KrkString*,byteorder);
|
|
||||||
int _signed = 0;
|
int _signed = 0;
|
||||||
if (hasKw) {
|
if (!krk_parseArgs(".is|p", (const char*[]){"length","byteorder","signed"}, &length, &byteorder, &_signed)) return NONE_VAL();
|
||||||
KrkValue tmp;
|
if (length < 0) return krk_runtimeError(vm.exceptions->valueError, "length must be non-negative");
|
||||||
if (krk_tableGet(AS_DICT(argv[argc]), OBJECT_VAL(S("signed")), &tmp)) {
|
|
||||||
_signed = !krk_isFalsey(tmp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (length < 0) {
|
|
||||||
return krk_runtimeError(vm.exceptions->valueError, "length must be non-negative");
|
|
||||||
}
|
|
||||||
|
|
||||||
int order = 0;
|
int order = 0;
|
||||||
if (!strcmp(byteorder->chars,"little")) {
|
if (!strcmp(byteorder,"little")) {
|
||||||
order = 1;
|
order = 1;
|
||||||
} else if (!strcmp(byteorder->chars,"big")) {
|
} else if (!strcmp(byteorder,"big")) {
|
||||||
order = -1;
|
order = -1;
|
||||||
} else {
|
} else {
|
||||||
return krk_runtimeError(vm.exceptions->valueError, "byteorder must be either 'little' or 'big'");
|
return krk_runtimeError(vm.exceptions->valueError, "byteorder must be either 'little' or 'big'");
|
||||||
|
Loading…
Reference in New Issue
Block a user