Skip to content

repeatedを使ったclassでgetSerializedSizeをするとInvalidProtocolBufferExceptionになる。 #16

@GoogleCodeExporter

Description

@GoogleCodeExporter
What steps will reproduce the problem?

1. repeatedを使ったclassでgetSerializedSizeをすると
InvalidProtocolBufferExceptionになる。


原因:type分けしているif文でvalue is Arrayをしてない。


CodedInputStream.as

  public static function computeFieldSize(number:int, value:*):int {

    if (value is String)
        return computeStringSize(number, (value as String));
    else if (value is Boolean) 
        return computeBoolSize(number, (value as Boolean));
    else if (value is uint) 
        return computeUInt32Size(number, (value as uint));
    else if (value is int)
        return computeInt32Size(number, (value as int));
    else if (value is Number)
        return computeInt64Size(number, (value as BigInteger));
    else if ( value is Message )
        return value.getSerializedSize();

    //add Array Type
    else if ( value is Array )
    {
        var size:int = 0;
        for each ( var elem:* in value )
        {
            size += computeFieldSize( number, elem );
        }
        return size;
    }   
    //add End

    else
        throw  new InvalidProtocolBufferException( "Could not compute size 
of field, type was not valid");
  }

Original issue reported on code.google.com by piggest0...@gmail.com on 5 Jan 2010 at 5:06

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions