diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-12-03 08:51:44 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-12-04 09:41:31 -0800 |
| commit | bea2ffc7da7bcd304a137e89c4d43292e30c6273 (patch) | |
| tree | a89a1cc91317f2f20c5aa4dcc0e27aa4e6ceab6a /mesonbuild | |
| parent | 313c4b7d8e9a31da8356a7c0e04d1bbd2c74a42d (diff) | |
| download | meson-bea2ffc7da7bcd304a137e89c4d43292e30c6273.tar.gz | |
interpreter: validate argument to string.split() for empty string
The underlying Python implementation throws in this case, and I'm not
sure what the correct result here would be if we allowed it. Convert to
None and don't split? Split every character?
I've gone with throwing InvalidArguments, which maintains the current
behavior of "doesn't work" but with a nicer output. Any other change
would require a FeatureNew anyway, and can wait till 1.11.
Fixes: #15335
Diffstat (limited to 'mesonbuild')
| -rw-r--r-- | mesonbuild/interpreter/primitives/string.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/mesonbuild/interpreter/primitives/string.py b/mesonbuild/interpreter/primitives/string.py index 190e82a39..2adc58d34 100644 --- a/mesonbuild/interpreter/primitives/string.py +++ b/mesonbuild/interpreter/primitives/string.py @@ -108,7 +108,10 @@ class StringHolder(ObjectHolder[str]): @typed_pos_args('str.split', optargs=[str]) @InterpreterObject.method('split') def split_method(self, args: T.Tuple[T.Optional[str]], kwargs: TYPE_kwargs) -> T.List[str]: - return self.held_object.split(args[0]) + delimiter = args[0] + if delimiter == '': + raise InvalidArguments('str.split() delimitier must not be an empty string') + return self.held_object.split(delimiter) @noKwargs @typed_pos_args('str.strip', optargs=[str]) |
