Skip to content

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

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