diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2016-07-24 00:27:25 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2016-07-24 00:27:25 +0200 |
commit | 9b7c801c370b69bec13b7d737212cab3d70b0f11 (patch) | |
tree | 7990ea6ea35a13b688e95483c1a7e121790a3993 /driver-ti.c | |
parent | 1f2a32ed97cdfe6a389dda5f386cc501e0cf97a1 (diff) | |
download | termo-9b7c801c370b69bec13b7d737212cab3d70b0f11.tar.gz termo-9b7c801c370b69bec13b7d737212cab3d70b0f11.tar.xz termo-9b7c801c370b69bec13b7d737212cab3d70b0f11.zip |
Make unibilium work at all
Diffstat (limited to 'driver-ti.c')
-rw-r--r-- | driver-ti.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/driver-ti.c b/driver-ti.c index c94079f..a4a5a27 100644 --- a/driver-ti.c +++ b/driver-ti.c @@ -227,15 +227,19 @@ load_terminfo (termo_ti_t *ti, const char *term) if (node && !insert_seq (ti, value, node)) { free (node); + // FIXME: unibi leak return false; } } // Clone the behaviour of ncurses for xterm mouse support + const char *set_mouse_string = NULL; #ifdef HAVE_UNIBILIUM - const char *set_mouse_string = unibi_get_str (unibi, "XM"); + size_t xm = unibi_add_ext_str (unibi, "XM", NULL); + if (xm != SIZE_MAX) + set_mouse_string = unibi_get_ext_str (unibi, xm); #else - const char *set_mouse_string = tigetstr ("XM"); + set_mouse_string = tigetstr ("XM"); #endif if (!set_mouse_string || set_mouse_string == (char *) -1) ti->set_mouse_string = strdup ("\E[?1000%?%p1%{1}%=%th%el%;"); @@ -257,6 +261,7 @@ load_terminfo (termo_ti_t *ti, const char *term) if (!insert_seq (ti, mouse_report_string, node)) { free (node); + // FIXME: unibi leak return false; } } @@ -334,9 +339,9 @@ set_mouse (termo_ti_t *ti, bool enable) { #ifdef HAVE_UNIBILIUM unibi_var_t params[9] = { enable, 0, 0, 0, 0, 0, 0, 0, 0 }; - char start_string[unibi_run (ti->set_mouse_string, params, NULL, 0)]; - unibi_run (ti->set_mouse_string, params, - start_string, sizeof start_string); + char start_string[unibi_run (ti->set_mouse_string, params, NULL, 0) + 1]; + start_string[unibi_run (ti->set_mouse_string, params, + start_string, sizeof start_string - 1)] = 0; #else char *start_string = tparm (ti->set_mouse_string, enable, 0, 0, 0, 0, 0, 0, 0, 0); |