aboutsummaryrefslogtreecommitdiffhomepage
path: root/exec.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-01-30 11:15:06 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-01-30 11:15:06 -0800
commit3ad7de0fcb9ec08f09af3c86d1f094a534c399af (patch)
tree083fb94344578d33ae20d70d06d052a4a3f71515 /exec.cpp
parent48408b0a0bf16dcb8cfca7bffc1502677e094a93 (diff)
Fix some leaks and clean up expand_pid to use wcstring
Diffstat (limited to 'exec.cpp')
-rw-r--r--exec.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/exec.cpp b/exec.cpp
index 031914d2..a25f6ce5 100644
--- a/exec.cpp
+++ b/exec.cpp
@@ -1175,7 +1175,6 @@ void exec( parser_t &parser, job_t *j )
{
case INTERNAL_FUNCTION:
{
- const wchar_t * orig_def;
wchar_t * def=0;
int shadows;
@@ -1187,23 +1186,19 @@ void exec( parser_t &parser, job_t *j )
*/
signal_unblock();
- orig_def = function_get_definition( p->argv0() );
+ const wchar_t * orig_def = function_get_definition( p->argv0() );
// function_get_named_arguments may trigger autoload, which deallocates the orig_def.
// We should make function_get_definition return a wcstring (but how to handle NULL...)
if (orig_def)
- orig_def = wcsdup(orig_def);
+ def = wcsdup(orig_def);
wcstring_list_t named_arguments = function_get_named_arguments( p->argv0() );
shadows = function_get_shadows( p->argv0() );
signal_block();
- if( orig_def )
- {
- def = (wchar_t *)halloc_register( j, const_cast<wchar_t *>(orig_def) );
- }
- if( def == 0 )
+ if( def == NULL )
{
debug( 0, _( L"Unknown function '%ls'" ), p->argv0() );
break;
@@ -1235,6 +1230,7 @@ void exec( parser_t &parser, job_t *j )
parser.allow_function();
parser.pop_block();
+ free(def);
break;
}