<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rayedit.git/line.c, branch feat/piece</title>
<subtitle>Text editor for large files
</subtitle>
<id>http://git.dilluti0n.com/rayedit.git/atom?h=feat%2Fpiece</id>
<link rel='self' href='http://git.dilluti0n.com/rayedit.git/atom?h=feat%2Fpiece'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/'/>
<updated>2025-05-14T09:40:29Z</updated>
<entry>
<title>fix: double-free of line object in eb_backspace and eb_delete_line</title>
<updated>2025-05-14T09:40:29Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-05-14T06:46:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=502aea93b7e2cae6a17d83e6989109d56c9ec79f'/>
<id>urn:sha1:502aea93b7e2cae6a17d83e6989109d56c9ec79f</id>
<content type='text'>
On eb_backspace, when the upper line was non-null, line_cat followed
by line_free, and eb_delete_line only cleared the line_vec. However,
commit 2441e78 introduced an additional line_free in eb_delete_line to
fix a memory leak, which led to a double-free for that line. This
patch resolves that problem.
</content>
</entry>
<entry>
<title>refactor: replace #ifdef DEBUG printf to log_printf</title>
<updated>2025-05-14T05:45:36Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-05-14T05:44:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=1c437616c793c07f0afb78551056052413ba520b'/>
<id>urn:sha1:1c437616c793c07f0afb78551056052413ba520b</id>
<content type='text'>
- fix log_printf to not automatically insert newline
</content>
</entry>
<entry>
<title>refactor: introduce mem.h; wrappers for allocators</title>
<updated>2025-05-10T13:51:23Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-05-10T13:13:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=d6872a59a28c8db551ff0b18c9d9041c5cbaa5a5'/>
<id>urn:sha1:d6872a59a28c8db551ff0b18c9d9041c5cbaa5a5</id>
<content type='text'>
This patch removes the dependency on raylib when allocating memory.
</content>
</entry>
<entry>
<title>fix: Memory Leak in eb_delete_line</title>
<updated>2025-05-10T13:20:29Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-05-10T11:12:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=2441e78bffaef89dcea64c547329e541250553e7'/>
<id>urn:sha1:2441e78bffaef89dcea64c547329e541250553e7</id>
<content type='text'>
The function eb_delete_line did not properly free the contents of the
entry when deleting an element from eb-&gt;line_vec. This patch fixes
that issue.
</content>
</entry>
<entry>
<title>refactor: deprecate line-&gt;cursor; simplify vertical cursor movement</title>
<updated>2025-05-01T15:24:36Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-05-01T14:29:19Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=59bda4a797bcf7cc06f4e3990db8d91448d7604a'/>
<id>urn:sha1:59bda4a797bcf7cc06f4e3990db8d91448d7604a</id>
<content type='text'>
This patch removes the per-line cursor cache (`line-&gt;cursor`),
reducing implementation complexity. Vertical cursor movement (up/down)
now uniformly places the cursor at the beginning of the line, instead
of trying to restore the previous horizontal position. UX
considerations such as column preservation will be revisited after
core stabilization.
</content>
</entry>
<entry>
<title>fix: line_split allocating newline but not initializing correctly</title>
<updated>2025-04-29T13:55:33Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-04-29T13:55:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=892b4124854df788953f7742488bdcf745b95914'/>
<id>urn:sha1:892b4124854df788953f7742488bdcf745b95914</id>
<content type='text'>
The bug caused UB on splited newline. (especially when is_lazy = 1
unluckly)
</content>
</entry>
<entry>
<title>fix: SEGSEGV on line_get_last; NULL check for li should be first.</title>
<updated>2025-04-29T13:38:33Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-04-29T13:38:33Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=9a741c76e98372f2d492660e08010ce8336b596c'/>
<id>urn:sha1:9a741c76e98372f2d492660e08010ce8336b596c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: add slice-based accessors for line and editor buffer</title>
<updated>2025-04-29T12:56:40Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-04-29T12:53:27Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=5e4cb3121fd3eaf9ed6b6887e8010f6a80ed0f3d'/>
<id>urn:sha1:5e4cb3121fd3eaf9ed6b6887e8010f6a80ed0f3d</id>
<content type='text'>
This adds `line_get_slice` and `eb_get_line_slice`, enabling
slice-style (pointer + length) access to line contents without
requiring materialization into a null-terminated string.

- `line_get_slice` returns either the original mmap'd buffer (if the
- line is lazy) or the materialized vector contents (if edited).
- `eb_get_line_slice` wraps `line_get_slice` to provide safe access at
- the editor buffer level.  Update `line.h` and `editor.h` headers to
- declare the new functions.  Minor documentation improvements to
- clarify "init", "modify", and "get" function categories.

This prepares the codebase for transitioning away from C-string
dependency where possible, improving efficiency and avoiding
unnecessary memory copies.
</content>
</entry>
<entry>
<title>fix: `line_free` to handle lazy-loaded line appropriately.</title>
<updated>2025-04-29T07:37:24Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-04-29T07:37:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=c9273c50f42e2df8aa7a3a754e649e55c1d31445'/>
<id>urn:sha1:c9273c50f42e2df8aa7a3a754e649e55c1d31445</id>
<content type='text'>
fix `line_cat` to handle lazy-loaded `src` line too

[minor]
add const keyword for line_get_last since it is.
</content>
</entry>
<entry>
<title>refactor: introduce lazy loading to each line buffer.</title>
<updated>2025-04-29T07:12:29Z</updated>
<author>
<name>dilluti0n</name>
<email>hskimse1@gmail.com</email>
</author>
<published>2025-04-29T06:54:05Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/rayedit.git/commit/?id=681aca7025dd1d43700b55d8a254bb61881d4b06'/>
<id>urn:sha1:681aca7025dd1d43700b55d8a254bb61881d4b06</id>
<content type='text'>
Each `struct line` now holds a pointer (`origin`) to its corresponding
line in the mmap'd file, along with its length (`origin_len`). The
`vec` field is no longer allocated for each line during
`eb_load_file`.

Instead, actual memory allocation and copying into `vec` occurs only
when an edit is made or when `line_get_string` is called (since a C
string is required). This behavior is handled via the internal inline
function `edit_happen`.

Also implement `vec_cat_raw` to `line_cat` when lazy `src`.

[minor]
Remove unused debug messages in editor.c.
</content>
</entry>
</feed>
