I've been tracing a problem with the command strings frequently being corrupted after using addCommand several times. I believe that the following line in SerialCommand.cpp is a bug:
commandList = (SerialCommandCallback *) realloc(commandList, (commandCount + 1) * sizeof(SerialCommandCallback));
The C++ reference on realloc states the following:
The content of the memory block is preserved up to the lesser of the new and old sizes, even if the block is moved to a new location. If the new size is larger, the value of the newly allocated portion is indeterminate.
A simple but inelegant fix would be to hard-code the size of commandList in the header file and limit the maximum number of commands.
Perhaps a more flexible dynamic allocation approach could follow from a linked-list implementation.
I've been tracing a problem with the command strings frequently being corrupted after using
addCommandseveral times. I believe that the following line in SerialCommand.cpp is a bug:The C++ reference on
reallocstates the following:A simple but inelegant fix would be to hard-code the size of
commandListin the header file and limit the maximum number of commands.Perhaps a more flexible dynamic allocation approach could follow from a linked-list implementation.