aboutsummaryrefslogtreecommitdiffhomepage
path: root/builtin.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-02-08 23:53:23 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-02-08 23:53:23 -0800
commitf891ea5713029484f30bdf12ed56de83162da33f (patch)
treeafe4f288c92eb8a1e3dd11c414ffc1b916f80f5c /builtin.cpp
parentd3311c81e5b29a7a5d0c6c2d2e74305b4c3b0d1d (diff)
Fixed named_arguments to be wcstring_list_t instead of al_list
Diffstat (limited to 'builtin.cpp')
-rw-r--r--builtin.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/builtin.cpp b/builtin.cpp
index abce95d2..260a1722 100644
--- a/builtin.cpp
+++ b/builtin.cpp
@@ -1456,7 +1456,9 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
int res=STATUS_BUILTIN_OK;
wchar_t *desc=0;
std::vector<event_t> events;
- array_list_t *named_arguments=0;
+
+ std::auto_ptr<wcstring_list_t> named_arguments(NULL);
+
wchar_t *name = 0;
int shadows = 1;
@@ -1651,8 +1653,8 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
}
case 'a':
- if( !named_arguments )
- named_arguments = al_halloc( parser.current_block );
+ if( named_arguments.get() == NULL )
+ named_arguments.reset(new wcstring_list_t);
break;
case 'S':
@@ -1706,7 +1708,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
name = argv[woptind++];
- if( named_arguments )
+ if( named_arguments.get() )
{
while( woptind < argc )
{
@@ -1720,7 +1722,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
break;
}
- al_push( named_arguments, halloc_wcsdup( parser.current_block, argv[woptind++] ) );
+ named_arguments->push_back(argv[woptind++]);
}
}
else if( woptind != argc )
@@ -1773,8 +1775,9 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
d->name=halloc_wcsdup( parser.current_block, name);
d->description=desc?halloc_wcsdup( parser.current_block, desc):0;
d->events.swap(events);
- d->named_arguments = named_arguments;
d->shadows = shadows;
+ if (named_arguments.get())
+ d->named_arguments.swap(*named_arguments);
for( size_t i=0; i<d->events.size(); i++ )
{