Commit bd91ba3
committed
[[ Bug 22011 ]] Fix memory leak when using LCB's char iterator
This patch fixes a memory leak which occurs when using LCB's repeat
for each char control structure when the loop terminates early, e.g.
due to using exit repeat or return within the loop.
The reason the leak occurs is that, previously, the underlying iterator
required a memory allocation at the start, which required deallocation
at the end. However, LCB cannot support such iterator requirements
correctly at the moment.
To fix the issue, the char iterator implementation has been changed to
use the underlying grapheme iterator directly - this does not require
any memory allocation to hold state as it works by looking at adjacent
codepoints, and thus can be implemented in the same fashion as the other
iterators (i.e. by storing the current codeunit offset in the iterator
state pointer).1 parent b5e0e6b commit bd91ba3
File tree
3 files changed
+33
-18
lines changed- docs/notes
- libscript/src
- tests/lcb/stdlib
3 files changed
+33
-18
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
246 | 246 | | |
247 | 247 | | |
248 | 248 | | |
249 | | - | |
250 | | - | |
251 | | - | |
252 | | - | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
253 | 252 | | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | | - | |
258 | | - | |
259 | | - | |
260 | | - | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
261 | 263 | | |
262 | | - | |
263 | | - | |
264 | | - | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
265 | 267 | | |
266 | | - | |
267 | 268 | | |
268 | 269 | | |
269 | 270 | | |
270 | | - | |
| 271 | + | |
271 | 272 | | |
272 | 273 | | |
273 | 274 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
397 | 397 | | |
398 | 398 | | |
399 | 399 | | |
400 | | - | |
401 | 400 | | |
402 | 401 | | |
403 | 402 | | |
404 | 403 | | |
405 | | - | |
406 | 404 | | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
407 | 420 | | |
408 | 421 | | |
409 | 422 | | |
| |||
0 commit comments