toncenter / tvm_valuetypes

Collection of utils for handling The Open Network Virtual Machine value types
Other
9 stars 10 forks source link

Infinite recursion in serialize_boc #15

Open shermike opened 10 months ago

shermike commented 10 months ago

The following code leads to infinite recursion of move_to_end method

from tvm_valuetypes import Cell, deserialize_boc
import base64
boc = base64.b64decode('te6ccgECCwEAAg4AAt7/AIIQO5rKAPhljifIgQEBzwABIIIBhqC5n+1E0PQFgED0Qsj0AMntVJj4QYBA9EL4YeL4bo4dIIIBhqC5le1E0PQFkvhB4oBA9Azy4EaBAQHXANH4bSDBAfSkIFiS9KDgXwLIaKb+kxLL/+TJitkCAQCW7UDtRNDTH9P/kwHtUIIB/ScnAbmOEYIB/ScXuvKpVQFVA18DVQHZ4YIB8f8XuvKp/gD+/wBCQkJCQkJCQkJCQkJCQkJbVQEwVQHZAgEgBwMCAv4GBAI/O1AAtDbPJPtUHABo46AIFkBVQHhIscCIeH4AFUBW9mAFCAA40wEBwALtQAHysO1Q+kD6QPoA0wAwwwBxsANfAwBNFujeoD2IlnjBHF/QxDjBO1E0NMfAqDIyx8B0/8wUAKgzwv/ye1UgAkDf7UAC0Ns8k+1QcAGjjoAgWQFVAeEixwIh4fgAVQFb2QoIAfztRNDTH9P/MCTHAY5cMCTXDR9vo44RXwMBpgvIyx/L/8ntVFUBW9khAeGdyMsfy//J7VRVAl8D2XEUupZbAqYLItnhQBfjBNMf+AD+/wBBQUFBQUFBQUFBQUFBQUEwJVUTAVUEVQVVI9kgWQFVAeElxwIh4TABpgrIyx/L/8kJAAztVFUBW9kAVNMA7UAC8nAB7VDTANMA0wD6QPpA+gD0BPoA+gDTP9Mf0wAwwwBxsAtfCw==')
cell = deserialize_boc(boc)
boc = cell.serialize_boc(has_idx=False, hash_crc32=False, has_cache_bits=False, flags=0)

Where boc is a code, produced by TON-Compiler.

I guess it is because of this PR https://github.com/toncenter/tvm_valuetypes/pull/9 I reverted these changes in build_indexes method, and test passed.

Moreover, I ran the code from Issue https://github.com/toncenter/tvm_valuetypes/issues/8 and it passed too.