mercury-api-0.1.0.0: cbits/api/patches/README.md
These are patches to be applied to Mercury API to fix various bugs.
I've submitted all of them (except `config.patch`) to ThingMagic for
possible inclusion in a future release.
`config.patch` - This increases the maximum length of URIs from 64 bytes to 256 bytes. Unlike all the other patches, this is a configuration change, not a bug fix, so it has not been submitted upstream.
`eintr.patch` - This retries the `select()` operation when it returns `EINTR`. This is always good practice, but it seemed to be necessary in my situation to avoid failing with a timeout. There are probably plenty of other places in the API where this should be done, too.
`extern.patch` - This fixes a problem I ran into with `isSecureAccessEnabled` being multiply defined, when compiling with cabal. (Strangely, doesn't happen when using ThingMagic's Makefile.)
`host-c-library.patch` - The build failed when `TMR_USE_HOST_C_LIBRARY` was defined. This fixes that.
`infinite-loop.patch` - This avoids an infinite loop that I ran into, when somehow `readOffSet` was 142, and `dataLength` was 128. Not sure how that happened, and it probably indicates another bug, but at least this fix prevents going into an infinite loop in that situation.
`metadataflag-size.patch` - `paramSet()` treated `TMR_PARAM_METADATAFLAG` as `TMR_TRD_MetadataFlag`, while `paramGet()` treated `TMR_PARAM_METADATAFLAG` as `uint16_t`. Since `sizeof(TMR_TRD_MetadataFlag)` is 4 but `sizeof(uint16_t)` is 2, the sizes didn't match. This patch fixes `paramGet()` to also treat it as `TMR_TRD_MetadataFlag`.
`mingw-dword-pointer.patch` - Fixes a compiler warning about `warning: passing argument 4 of 'ReadFile' from incompatible pointer type [-Wincompatible-pointer-types]`. Somehow the warning was getting treated as an error on Appveyor.
`mingw-snprintf.patch` - Fixes a problem I ran into on MinGW, where `sprintf_s()` doesn't seem to work properly, but `snprintf()` does work properly.
`typos.patch` - This just fixes a bunch of small typos I found.
`windows-time.patch` - On Windows, `tmr_gettime_low()` and `tmr_gettime_high()` were returning the number of 100-nanosecond units since 1/1/1601, rather than the number of milliseconds since 1/1/1970. This caused the `timestampLow` and `timestampHigh` fields of `TMR_TagReadData` to be populated incorrectly. This patch fixes that problem.