Skip to content

Commit e6af29c

Browse files
committed
more array changes to fight leaks.
1 parent c55c82e commit e6af29c

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

examples/showcase.v

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,11 +1342,13 @@ fn icon_catalog(mut w gui.Window) gui.View {
13421342

13431343
// Break the icons_maps into rows
13441344
chunks := chunk_map(gui.icons_map, 4)
1345-
mut all_icons := []gui.View{}
1345+
mut all_icons := []gui.View{cap: chunks.len}
1346+
unsafe { all_icons.flags.set(.noslices) }
1347+
defer { unsafe { all_icons.flags.clear(.noslices) } }
13461348

13471349
// create rows of icons/text
13481350
for chunk in chunks {
1349-
mut icons := []gui.View{}
1351+
mut icons := []gui.View{cap: chunk.len}
13501352
unsafe { icons.flags.set(.noslices) }
13511353
defer { unsafe { icons.flags.clear(.noslices) } }
13521354
for key, val in chunk {
@@ -1377,7 +1379,7 @@ fn icon_catalog(mut w gui.Window) gui.View {
13771379

13781380
// maybe this should be a standard library function?
13791381
fn chunk_map[K, V](input map[K]V, chunk_size int) []map[K]V {
1380-
mut chunks := []map[K]V{}
1382+
mut chunks := []map[K]V{cap: input.keys().len / chunk_size + 1}
13811383
unsafe { chunks.flags.set(.noslices) }
13821384
defer { unsafe { chunks.flags.clear(.noslices) } }
13831385
mut current_chunk := map[K]V{}

text_tools.v

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,12 @@ fn split_text(s string, tab_size u32) []string {
169169
state_sp := 1
170170

171171
mut state := state_ch
172-
mut fields := []string{}
173-
fields.ensure_cap(100)
172+
mut fields := []string{cap: 100}
174173
unsafe { fields.flags.set(.noslices) }
175174
defer { unsafe { fields.flags.clear(.noslices) } }
176-
mut field := []rune{}
175+
mut field := []rune{cap: 50}
176+
unsafe { field.flags.set(.noslices) }
177+
defer { unsafe { field.flags.clear(.noslices) } }
177178
for r in s.runes_iterator() {
178179
if state == state_ch {
179180
if r == r_space {

view_container.v

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,7 @@ fn container(cfg &ContainerCfg) View {
215215
padding: padding_none
216216
}
217217
}
218-
mut content := []View{}
219-
content.ensure_cap(cfg.content.len + 3)
218+
mut content := []View{cap: cfg.content.len + 3}
220219
unsafe { content.flags.set(.noslices) }
221220
defer { unsafe { content.flags.clear(.noslices) } }
222221

view_text.v

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,8 @@ fn (cfg &TextCfg) copy(shape &Shape, w &Window) ?string {
314314
else {
315315
mut count := 0
316316
mut buffer := []rune{cap: 100}
317+
unsafe { buffer.flags.set(.noslices) }
318+
defer { unsafe { buffer.flags.clear(.noslices) } }
317319
beg := int(input_state.select_beg)
318320
end := int(input_state.select_end)
319321
for line in shape.text_lines {

window.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ pub fn (mut window Window) update_view(gen_view fn (&Window) View) {
230230
// reference to render array significantly reduced calls to array.push()
231231
view := gen_view(window)
232232
mut layout := window.compose_layout(view)
233-
mut renderers := []Renderer{}
233+
mut renderers := []Renderer{cap: 200}
234234
unsafe { renderers.flags.set(.noslices) }
235235
defer { unsafe { renderers.flags.clear(.noslices) } }
236236
window_rect := window.window_rect()
@@ -258,7 +258,7 @@ pub fn (mut window Window) update_window() {
258258

259259
view := window.view_generator(window)
260260
mut layout := window.compose_layout(view)
261-
mut renderers := []Renderer{}
261+
mut renderers := []Renderer{cap: 200}
262262
unsafe { renderers.flags.set(.noslices) }
263263
defer { unsafe { renderers.flags.clear(.noslices) } }
264264
window_rect := window.window_rect()

0 commit comments

Comments
 (0)