diff --git a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp
index dadf2a3..1860d4c 100644
--- a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp
+++ b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp
@@ -318,7 +318,7 @@
 
     ~CommandOptions() override = default;
 
-    Error SetOptionValue(uint32_t option_idx, const char *option_arg,
+    Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
                          ExecutionContext *execution_context) override {
       Error error;
       const int short_option = m_getopt_table[option_idx].val;
@@ -331,9 +331,8 @@
 
       case 's':
         m_script_language = (lldb::ScriptLanguage)Args::StringToOptionEnum(
-            llvm::StringRef::withNullAsEmpty(option_arg),
-            GetDefinitions()[option_idx].enum_values, eScriptLanguageNone,
-            error);
+            option_arg, GetDefinitions()[option_idx].enum_values,
+            eScriptLanguageNone, error);
 
         m_use_script_language = (m_script_language == eScriptLanguagePython ||
                                  m_script_language == eScriptLanguageDefault);
@@ -341,11 +340,11 @@
 
       case 'e': {
         bool success = false;
-        m_stop_on_error = Args::StringToBoolean(
-            llvm::StringRef::withNullAsEmpty(option_arg), false, &success);
+        m_stop_on_error = Args::StringToBoolean(option_arg, false, &success);
         if (!success)
           error.SetErrorStringWithFormat(
-              "invalid value for stop-on-error: \"%s\"", option_arg);
+              "invalid value for stop-on-error: \"%s\"",
+              option_arg.str().c_str());
       } break;
 
       case 'F':
