Fix memory leak in ts_load_language
* src/treesit.c (ts_load_language): Move initialization of c_name down and free it right after use.
This commit is contained in:
parent
5a2c1a743b
commit
1cd42bfb8a
1 changed files with 5 additions and 6 deletions
|
@ -497,9 +497,6 @@ treesit_load_language (Lisp_Object language_symbol,
|
|||
concat2 (build_pure_c_string ("libtree-sitter-"), symbol_name);
|
||||
Lisp_Object base_name =
|
||||
concat2 (build_pure_c_string ("tree-sitter-"), symbol_name);
|
||||
/* FIXME: The result of strdup leaks memory in some cases. */
|
||||
char *c_name = strdup (SSDATA (base_name));
|
||||
treesit_symbol_to_c_name (c_name);
|
||||
|
||||
/* Override the library name and C name, if appropriate. */
|
||||
Lisp_Object override_name;
|
||||
|
@ -508,10 +505,7 @@ treesit_load_language (Lisp_Object language_symbol,
|
|||
&override_name,
|
||||
&override_c_name);
|
||||
if (found_override)
|
||||
{
|
||||
lib_base_name = override_name;
|
||||
c_name = SSDATA (override_c_name);
|
||||
}
|
||||
|
||||
/* Now we generate a list of possible library paths. */
|
||||
Lisp_Object path_candidates = Qnil;
|
||||
|
@ -560,7 +554,12 @@ treesit_load_language (Lisp_Object language_symbol,
|
|||
/* Load TSLanguage. */
|
||||
dynlib_error ();
|
||||
TSLanguage *(*langfn) (void);
|
||||
char *c_name = strdup (SSDATA (base_name));
|
||||
treesit_symbol_to_c_name (c_name);
|
||||
if (found_override)
|
||||
c_name = SSDATA (override_c_name);
|
||||
langfn = dynlib_sym (handle, c_name);
|
||||
free(c_name);
|
||||
error = dynlib_error ();
|
||||
if (error != NULL)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue