SerialImp.c:getRegistryString() - make thread-safe #265
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
CommPortIdentifier.java:getPortIdentifiers() calls
(new RXTXCommDriver()).initialize()→ RXTXCommDriver.java:initialize() → registerKnownPorts(CommPortIdentifier.PORT_SERIAL) → SerialImp.c:RXTXCommDriver(registerKnownPorts) → getRegistryString() → and it returns its value in a static allocated string (static char resultStr[256]).If two threads call at the same time CommPortIdentifier.java:getPortIdentifiers(), both threads will write at the same time in that
static char resultStr[256].Likewise, when two threads at the same time call RXTXCommDriver.isPortPrefixValid(), there will also be multithreading problem, the only fact which saves the situation is that this is not called from anywhere.