Skip to content

Commit 102ac6f

Browse files
committed
fix: toArray
1 parent e4dfbde commit 102ac6f

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

cpp/MGBigNumberHostObject.cpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,35 @@ namespace margelo
9595
{
9696
len = std::max(1, numberLen);
9797
}
98+
else
99+
{
100+
len = std::min(len, numberLen);
101+
}
102+
98103
unsigned char *to = new unsigned char[len];
99104
if (le)
100105
{
101-
BN_bn2lebinpad(thiz->bign, to, len);
106+
if (len == numberLen) {
107+
BN_bn2lebinpad(thiz->bign, to, len);
108+
} else {
109+
// For smaller lengths, we need to get the full number and truncate
110+
unsigned char *full = new unsigned char[numberLen];
111+
BN_bn2lebinpad(thiz->bign, full, numberLen);
112+
memcpy(to, full, len);
113+
delete[] full;
114+
}
102115
}
103116
else
104117
{
105-
BN_bn2binpad(thiz->bign, to, len);
118+
if (len == numberLen) {
119+
BN_bn2binpad(thiz->bign, to, len);
120+
} else {
121+
// For smaller lengths, we need to get the full number and truncate
122+
unsigned char *full = new unsigned char[numberLen];
123+
BN_bn2binpad(thiz->bign, full, numberLen);
124+
memcpy(to, full, len);
125+
delete[] full;
126+
}
106127
}
107128

108129
jsi::Array res(runtime, len);

example/src/Testing/TestList.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import BN from 'react-native-bignumber';
99
import { describe, it } from './MochaRNAdapter';
1010
import chai from 'chai';
1111

12-
console.log('BN', BN);
13-
1412
export const TEST_LIST: Array<TestItemType> = [
1513
{
1614
description: 'SimpleTests',
@@ -40,7 +38,7 @@ export const TEST_LIST: Array<TestItemType> = [
4038

4139
it('basic toArray', () => {
4240
chai.assert.deepEqual(
43-
new BN([1, 2, 3, 4], 'hex', 'le').toArray('le', 3),
41+
new BN([1, 2, 3, 4], 16, 'le').toArray('le', 3),
4442
[1, 2, 3]
4543
);
4644
});

0 commit comments

Comments
 (0)