Author: Jonas Devlieghere Date: 2020-02-05T14:52:08-08:00 New Revision: 6dccad7517f83a069d9bfbf761b648b0e50870c2
URL: https://github.com/llvm/llvm-project/commit/6dccad7517f83a069d9bfbf761b648b0e50870c2 DIFF: https://github.com/llvm/llvm-project/commit/6dccad7517f83a069d9bfbf761b648b0e50870c2.diff LOG: [lldb/Reproducers] (De)serialize char* like const char* The current implementation has a discrepancy between how char pointers are serialized and deserialized. The latter treats it like a const char* while the former serializes it as a pointer to a basic type. Both are potentially wrong, as char pointers are mostly used in combination with a size, and nothing guarantees that the string's length (its first null byte to be more precise) is greater or equal to its size. The real solution is to have a custom (de)serializer that uses both pieces of infromation. However, the implementation should be consistent between serialization and deserialization and I believe treating char* as const char* is the better alternative. Added: Modified: lldb/include/lldb/Utility/ReproducerInstrumentation.h Removed: ################################################################################ diff --git a/lldb/include/lldb/Utility/ReproducerInstrumentation.h b/lldb/include/lldb/Utility/ReproducerInstrumentation.h index 9039a7f1d162..bc28999221db 100644 --- a/lldb/include/lldb/Utility/ReproducerInstrumentation.h +++ b/lldb/include/lldb/Utility/ReproducerInstrumentation.h @@ -621,6 +621,8 @@ class Serializer { } } + void Serialize(char *t) { Serialize(static_cast<const char *>(t)); } + void Serialize(const char **t) { size_t size = 0; if (!t) { _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits