Backport TERMKEY_FLAG_NOSTART and fix two leaks

...that are notably still present in the original library.
master
Přemysl Eric Janouch 7 years ago
parent a9b41e41b7
commit 5b05b96ec0
Signed by: p
GPG Key ID: B715679E3A361BE6

@ -39,7 +39,7 @@ statically linked against the library, and hence they can be run as they are:
What's Different From the Original termkey?
-------------------------------------------
The main change is throwing away any UTF-8 dependent code, making the library
The main change is throwing out any UTF-8 dependent code, making the library
capable of handling all unibyte and multibyte encodings supported by iconv on
your system. The characters are still presented as Unicode in the end, however,
as the other sensible option is wchar_t and that doesn't really work well, see

@ -425,12 +425,12 @@ termo_new (int fd, const char *encoding, int flags)
termo_set_flags (tk, flags);
const char *term = getenv ("TERM");
if (termo_init (tk, term, encoding)
&& termo_start (tk))
if (!termo_init (tk, term, encoding))
free (tk);
else if (!(flags & TERMO_FLAG_NOSTART) && !termo_start (tk))
termo_free (tk);
else
return tk;
// FIXME: resource leak on termo_start() failure
free (tk);
return NULL;
}
@ -445,13 +445,12 @@ termo_new_abstract (const char *term, const char *encoding, int flags)
termo_set_flags (tk, flags);
if (!termo_init (tk, term, encoding))
{
free (tk);
return NULL;
}
termo_start (tk);
return tk;
else if (!(flags & TERMO_FLAG_NOSTART) && !termo_start (tk))
termo_free (tk);
else
return tk;
return NULL;
}
void

@ -192,7 +192,9 @@ enum
// Allow Ctrl-C to be read as normal, disabling SIGINT
TERMO_FLAG_CTRLC = 1 << 6,
// Return ERROR on signal (EINTR) rather than retry
TERMO_FLAG_EINTR = 1 << 7
TERMO_FLAG_EINTR = 1 << 7,
// Do not call termkey_start() in constructor
TERMO_FLAG_NOSTART = 1 << 8
};
enum

Loading…
Cancel
Save