diff options
| author | 2024-06-10 18:00:17 -0400 | |
|---|---|---|
| committer | 2024-06-10 18:00:17 -0400 | |
| commit | 48af6bc1ee92acf6fea7618d7ecaac64eca309d9 (patch) | |
| tree | 2eebd12ab03b4eba1e2f55282a08a64042554bff /src | |
| parent | Updated README for v0.13.0 (diff) | |
| parent | Merge branch 'master' into pr6 (diff) | |
| download | zg-48af6bc1ee92acf6fea7618d7ecaac64eca309d9.tar.gz zg-48af6bc1ee92acf6fea7618d7ecaac64eca309d9.tar.xz zg-48af6bc1ee92acf6fea7618d7ecaac64eca309d9.zip | |
Merge pull request 'codepoint: prevent panic when last cp too short' (#6) from rockorager/zg:master into master
Reviewed-on: https://codeberg.org/dude_the_builder/zg/pulls/6
Diffstat (limited to 'src')
| -rw-r--r-- | src/code_point.zig | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/code_point.zig b/src/code_point.zig index ac37562..2f2e80f 100644 --- a/src/code_point.zig +++ b/src/code_point.zig | |||
| @@ -46,6 +46,17 @@ pub const Iterator = struct { | |||
| 46 | .offset = self.i, | 46 | .offset = self.i, |
| 47 | }; | 47 | }; |
| 48 | 48 | ||
| 49 | // Return replacement if we don' have a complete codepoint remaining. Consumes only one byte | ||
| 50 | if (self.i + cp.len > self.bytes.len) { | ||
| 51 | defer self.i += 1; | ||
| 52 | // Unicode replacement code point. | ||
| 53 | return .{ | ||
| 54 | .code = 0xfffd, | ||
| 55 | .len = 1, | ||
| 56 | .offset = self.i, | ||
| 57 | }; | ||
| 58 | } | ||
| 59 | |||
| 49 | const cp_bytes = self.bytes[self.i..][0..cp.len]; | 60 | const cp_bytes = self.bytes[self.i..][0..cp.len]; |
| 50 | self.i += cp.len; | 61 | self.i += cp.len; |
| 51 | 62 | ||