[ https://issues.apache.org/jira/browse/THRIFT-1700?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13461050#comment-13461050 ]
Alexey edited comment on THRIFT-1700 at 9/22/12 6:39 PM: --------------------------------------------------------- Well, I've changed int to uint in only 2 places: http://pastie.org/4778992 But since size used in creating byte array, it still throws number overflow. P.S. It will be great if you'll explain me the meaning of the code that calculates size. "number & 0xff" stands for reducing from 64 to 32 bit? Or what? And why there is bitwise or? And why shifting? was (Author: folex): Well, I've changed int to uint in only 2 places: http://pastie.org/4778992 But since size used in creating byte array, it still throws number overflow. > Number overflow in ReadFrame. > ----------------------------- > > Key: THRIFT-1700 > URL: https://issues.apache.org/jira/browse/THRIFT-1700 > Project: Thrift > Issue Type: Bug > Components: C# - Library > Affects Versions: 0.8 > Reporter: Alexey > > private void ReadFrame() > { > byte[] i32rd = new byte[header_size]; > transport.ReadAll(i32rd, 0, header_size); > int size = > ((i32rd[0] & 0xff) << 24) | > ((i32rd[1] & 0xff) << 16) | > ((i32rd[2] & 0xff) << 8) | > ((i32rd[3] & 0xff)); > byte[] buff = new byte[size]; > transport.ReadAll(buff, 0, size); > readBuffer = new MemoryStream(buff); > } > Here, when calculating size, number overflow throws sometimes. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira