Comparing version 0.47.0 to 0.47.1
@@ -34,10 +34,22 @@ "use strict"; | ||
let initCell = (0, Builder_1.beginCell)().store((0, StateInit_1.storeStateInit)(message.init)); | ||
if (builder.availableBits - 2 /* At least on byte for body */ >= initCell.bits) { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
// Check if need to store it in ref | ||
let needRef = false; | ||
if (opts && opts.forceRef) { | ||
needRef = true; | ||
} | ||
else if (builder.availableBits - 2 /* At least on byte for ref flag */ >= initCell.bits) { | ||
needRef = false; | ||
} | ||
else { | ||
needRef = true; | ||
} | ||
// Persist init | ||
if (needRef) { | ||
builder.storeBit(true); | ||
builder.storeRef(initCell); | ||
} | ||
else { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
} | ||
} | ||
@@ -53,3 +65,4 @@ else { | ||
else { | ||
if (builder.availableBits - 1 /* At least on byte for body */ >= message.body.bits.length) { | ||
if (builder.availableBits - 1 /* At least on byte for ref flag */ >= message.body.bits.length && | ||
builder.refs + message.body.refs.length <= 4) { | ||
needRef = false; | ||
@@ -56,0 +69,0 @@ } |
@@ -34,10 +34,24 @@ "use strict"; | ||
let initCell = (0, Builder_1.beginCell)().store((0, StateInit_1.storeStateInit)(message.init)); | ||
if (builder.availableBits - 2 /* At least on byte for body */ >= initCell.bits) { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
// Check if ref is needed | ||
let needRef = false; | ||
if (opts && opts.forceRef) { | ||
needRef = true; | ||
} | ||
else { | ||
if (builder.availableBits - 2 /* At least on byte for ref flag */ >= initCell.bits) { | ||
needRef = false; | ||
} | ||
else { | ||
needRef = true; | ||
} | ||
} | ||
// Store ref | ||
if (needRef) { | ||
builder.storeBit(true); | ||
builder.storeRef(initCell); | ||
} | ||
else { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
} | ||
} | ||
@@ -53,3 +67,4 @@ else { | ||
else { | ||
if (builder.availableBits - 1 /* At least on byte for body */ >= message.body.bits.length) { | ||
if (builder.availableBits - 1 /* At least on byte for ref flag */ >= message.body.bits.length && | ||
builder.refs + message.body.refs.length <= 4) { | ||
needRef = false; | ||
@@ -56,0 +71,0 @@ } |
{ | ||
"name": "ton-core", | ||
"version": "0.47.0", | ||
"version": "0.47.1", | ||
"main": "dist/index.js", | ||
@@ -5,0 +5,0 @@ "repository": "https://github.com/ton-core/ton-core.git", |
@@ -49,8 +49,20 @@ import { beginCell, Builder } from "../boc/Builder"; | ||
let initCell = beginCell().store(storeStateInit(message.init)); | ||
if (builder.availableBits - 2 /* At least on byte for body */ >= initCell.bits) { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
// Check if need to store it in ref | ||
let needRef = false; | ||
if (opts && opts.forceRef) { | ||
needRef = true; | ||
} else if (builder.availableBits - 2 /* At least on byte for ref flag */ >= initCell.bits) { | ||
needRef = false; | ||
} else { | ||
needRef = true; | ||
} | ||
// Persist init | ||
if (needRef) { | ||
builder.storeBit(true); | ||
builder.storeRef(initCell); | ||
} else { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
} | ||
@@ -66,3 +78,4 @@ } else { | ||
} else { | ||
if (builder.availableBits - 1 /* At least on byte for body */ >= message.body.bits.length) { | ||
if (builder.availableBits - 1 /* At least on byte for ref flag */ >= message.body.bits.length && | ||
builder.refs + message.body.refs.length <= 4) { | ||
needRef = false; | ||
@@ -91,2 +104,2 @@ } else { | ||
} | ||
} | ||
} |
@@ -48,8 +48,22 @@ import { beginCell, Builder } from "../boc/Builder"; | ||
let initCell = beginCell().store(storeStateInit(message.init)); | ||
if (builder.availableBits - 2 /* At least on byte for body */ >= initCell.bits) { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
// Check if ref is needed | ||
let needRef = false; | ||
if (opts && opts.forceRef) { | ||
needRef = true; | ||
} else { | ||
if (builder.availableBits - 2 /* At least on byte for ref flag */ >= initCell.bits) { | ||
needRef = false; | ||
} else { | ||
needRef = true; | ||
} | ||
} | ||
// Store ref | ||
if (needRef) { | ||
builder.storeBit(true); | ||
builder.storeRef(initCell); | ||
} else { | ||
builder.storeBit(false); | ||
builder.storeBuilder(initCell); | ||
} | ||
@@ -65,3 +79,4 @@ } else { | ||
} else { | ||
if (builder.availableBits - 1 /* At least on byte for body */ >= message.body.bits.length) { | ||
if (builder.availableBits - 1 /* At least on byte for ref flag */ >= message.body.bits.length && | ||
builder.refs + message.body.refs.length <= 4) { | ||
needRef = false; | ||
@@ -68,0 +83,0 @@ } else { |
1073516
18613