[lldb] Fix that empty target.run-args are not actually used when launching process

`GetPropertyAtIndexAsArgs` returns true on success and false on failure. Right
now it returns the converted `size_t` returned from `GetArgs` which describes
the number of arguments in the argument list. So for empty argument lists
(`(size_t)0` -> `(bool)false`) this function always fails.

The only observable effect of this seems to be that empty arguments are never
propagated to the internal LaunchInfo for a process. This causes that once any
argument has been added to `target.run-args`, clearing `target.run-args` doesn't
have any effect.

Fixes issue #55568

Reviewed By: JDevlieghere, jingham

Differential Revision: https://reviews.llvm.org/D126057
This commit is contained in:
Raphael Isemann
2022-11-17 00:52:02 +01:00
parent 3ae3162cb6
commit a8bec61179
2 changed files with 21 additions and 6 deletions

View File

@@ -191,6 +191,15 @@ class TargetAPITestCase(TestBase):
self.assertIn('arg: foo', output)
self.assertIn('env: bar=baz', output)
# Clear all the run args set above.
self.runCmd("setting clear target.run-args")
process = target.LaunchSimple(None, None,
self.get_process_working_directory())
process.Continue()
self.assertEqual(process.GetState(), lldb.eStateExited)
output = process.GetSTDOUT(9999)
self.assertNotIn('arg: foo', output)
self.runCmd("settings set target.disable-stdio true")
process = target.LaunchSimple(
None, None, self.get_process_working_directory())