Fix issue with memory allocations in lisp::serialise

Was to do with sv_make.
This commit is contained in:
2025-05-30 08:12:49 +01:00
parent bfff660d0e
commit 4dc3d8f832
3 changed files with 24 additions and 11 deletions

View File

@@ -4,15 +4,6 @@
#+FILETAGS: :oats:
* Issues :issues:
** TODO Fix issue with memcpy overlap when string concatenating
[[file:lisp/lisp.c::// FIXME: Something is going wrong here!]]
Ideas on what's going wrong:
- String sizes seem off
- Maybe something is wrong with arena allocator; we use
[[file:lib/sv.c::newsv.data = arena_realloc(allocator, sv.data,
sv.size, newsv.size);][arena_realloc]] which seems to be the root of
the memcpy-overlap
* Features :features:
** WIP Reader :reader:
We want something a bit generic: able to handle reading from some
@@ -205,3 +196,18 @@ more work than the lowest byte (to look at it we'll need to push that
byte all the way down). So we'll be going for a low byte strategy by
shifting the pointer up by one byte. This leaves us with the lowest
byte to play with as we choose.
** DONE Fix issue with memcpy overlap when string concatenating
[[file:lisp/lisp.c::// FIXME: Something is going wrong here!]]
Ideas on what's going wrong:
- String sizes seem off
- Maybe something is wrong with arena allocator; we use
[[file:lib/sv.c::newsv.data = arena_realloc(allocator, sv.data,
sv.size, newsv.size);][arena_realloc]] which seems to be the root of
the memcpy-overlap
2025-05-30 08:11:24: Was an issue with ~sv_make~; if you pass a data
pointer, it will try to copy the size you passed as bytes from the
pointer. In ~sv_concat~ we pass the overall new size of the string
we're allocating and pass in the first argument to copy in the initial
part of the data first.