Wednesday, November 24, 2010

SkipObject Bug Solution

Yesterday I blogged about a bug I was having while implementing a serializer for my append only file storage.  I blogged about it here.

The problem with the code is found by gaining a better understanding of how the += operator works:

x += y;

Is equivalent to writing

x = x + y;

The problem in this case can is explained in the following snippet:

The fixed version of the function can be seen here:

Tuesday, November 23, 2010

Where is the bug?

I was recently working on an append only file data store.  I am building a list of the data at load time.  The code that builds the index doesn’t know how to read anything, but the header information for an object.  I have another class which implements ISerializer to handle reading and writing the objects that I want to store.  The ISerializer interface has a method called SkipObject which is supposed to advance the the stream past the object, which will have it at the start of the next object’s header.  The serializer can know how long the object is because the first 4 bytes of the object make up an integer that is the length of the object in bytes.

Here is what I initially had for the SkipObject method:

Can you spot the bug? I'll post the answer tomorrow.