lemo added inline comments.

================
Comment at: source/Interpreter/CommandInterpreter.cpp:2713
+      for (; chunk_size < size; ++chunk_size) {
+        assert(data[chunk_size] != '\0');
+        if (data[chunk_size] == '\n') {
----------------
amccarth wrote:
> Should we be that trusting of a caller?  In a non-debug build, if a caller 
> doesn't end the (non-empty) string with '\n', this'll just run past the end 
> of the buffer.  Did I miss something that guarantees the caller won't make a 
> mistake?  Would it be too expensive to play it safe?
There's no assumption that the string ends with \n, see the loop condition: 
chunk_size < size. The assert is just to validate that we don't have embedded 
NULs.


================
Comment at: source/Interpreter/CommandInterpreter.cpp:2708-2710
+    const char *data = str.data();
+    size_t size = str.size();
+    while (size > 0 && !WasInterrupted()) {
----------------
clayborg wrote:
> Since we are using "llvm::StringRef" here, why not use its split 
> functionality? Something like:
> ```
> bool done = false;
> while (!done) {
>   auto pair = str.split('\n');
>   auto len = pair.first.size();
>   done = pair.second.empty();
>   // Include newline if we are not done
>   if (!done)
>     ++len; 
>   stream.Write(pair.first.data(), 
> }
> ```
> 
> This approach also avoids the issue amccarth mentioned below about not ending 
> with a newline. It is also quite a bit simpler to follow.
I'll give it a try, thanks for the suggestion.


================
Comment at: source/Interpreter/CommandInterpreter.cpp:2728
+  } else {
+    stream.PutCString(str);
+  }
----------------
clayborg wrote:
> llvm::StringRef can contain NULLs right? Maybe use
> 
> ```
> stream.Write(data, size);
> ```
The original code (line 2714) was using PutCString(), so this path is just 
preserving the original functionality (which also suggests that the output is 
not expected to have embedded nuls)


https://reviews.llvm.org/D37923



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to