Skip to content

Stack overflow exception on storing struct with an enum value. #664

@divyang-desai

Description

@divyang-desai

Version: StratisFullNode-1.0.9.0 PoA with devmode=miner

Sample contract to generate the issue:

[Deploy]
public class SampleContract : SmartContract
{
    public SampleContract(ISmartContractState smartContractState)
    : base(smartContractState)
    {                
    }

    private void SetRequest(uint id, Request request) => State.SetStruct($"request:{id}", request);

    public Request GetRequest(uint id) => State.GetStruct<Request>($"request:{id}");

    public bool SampleRequest (uint id)
    {
        var request = new Request()
        {
             Id = id,
             RequestStatus = Status.Created
        };

        SetRequest(id, request);

        return true;
    }

    public struct Request
    {
        [Index]
        public uint Id;

        public Status RequestStatus;        
    }

    public enum Status
    {
        Created,
        Canceled
    }
}

You can reproduce the issue by executing the SampleRequest method.

Error:

image

If you change RequestStatus to int and cast while storing, it works fine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions