Tidy up opj_ callback functions in fx_codec_jpx_obj.cpp
authorTom Sepez <tsepez@chromium.org>
Tue, 2 Sep 2014 17:27:47 +0000 (10:27 -0700)
committerTom Sepez <tsepez@chromium.org>
Tue, 2 Sep 2014 17:27:47 +0000 (10:27 -0700)
commit49c41ac846ed685439b3b5ea9c9037bf4bba2365
treebc0a12035e9e0978680f01953e952f3dd65f7d6e
parent9f810e7216c2dbb1a1ab090f1bee4207ecd871c0
Tidy up opj_ callback functions in fx_codec_jpx_obj.cpp

This is code cleanup rather than bug fixing.

The motivation for this was to fix the casts at line 97 of the original file.  These are wrong; you cannot correct via casting a function signature mismatch when passing a function as an argument.  In theory, there's no reason to believe that the compiler will pass args in the same manner for a function of type (void*, size_t, void*) as for a function of type (void*, size_t, some_struct*).  The cast will suppress the compile error, but you can't be assured the call will work as intended.  In practice, it does, since the last architecture where a void* had a different representation than a struct* went extinct in the late 80s.

In the functions themselves, note that we currently bail out if srcData->offset >= srcData->src_size, so the expression
   bufferLength = (OPJ_SIZE_T)(srcData->src_size - srcData->offset)

will always be > 0.  Hence the check
   if(bufferLength <= 0)
is pointless, esp. since bufferLength is a signed type and < 0 makes no sense.

The opj_seek_from_memory() has a bool return value, so returning -1 on error doesn't seem reasonable.  Change this to TRUE/FALSE, and return false on seek past end.

If we're truly passing readonly data, then perhaps it makes sense to make the write() function always return -1. I didn't do this.

Lastly, I capitalize "DecodeData" so that it looks like a struct, and change its members to be size_t's to avoid casting back and forth.

R=jun_fang@foxitsoftware.com

Review URL: https://codereview.chromium.org/507273003
core/src/fxcodec/codec/fx_codec_jpx_opj.cpp