summaryrefslogtreecommitdiff
path: root/rb/src/IceRuby/Properties.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rb/src/IceRuby/Properties.cpp')
-rw-r--r--rb/src/IceRuby/Properties.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/rb/src/IceRuby/Properties.cpp b/rb/src/IceRuby/Properties.cpp
index c4168d94b47..1ffa5e8821d 100644
--- a/rb/src/IceRuby/Properties.cpp
+++ b/rb/src/IceRuby/Properties.cpp
@@ -47,6 +47,13 @@ IceRuby_createProperties(int argc, VALUE* argv, VALUE self)
defaults = getProperties(argv[1]);
}
+ //
+ // Insert the program name (stored in the Ruby global variable $0) as the first
+ // element of the sequence.
+ //
+ VALUE progName = callRuby(rb_gv_get, "$0");
+ seq.insert(seq.begin(), getString(progName));
+
Ice::PropertiesPtr obj = Ice::createProperties(seq, defaults);
//
@@ -56,9 +63,12 @@ IceRuby_createProperties(int argc, VALUE* argv, VALUE self)
{
callRuby(rb_ary_clear, argv[0]);
- for(Ice::StringSeq::iterator p = seq.begin(); p != seq.end(); ++p)
+ //
+ // We start at index 1 in order to skip the element that we inserted earlier.
+ //
+ for(Ice::StringSeq::size_type i = 1; i < seq.size(); ++i)
{
- VALUE str = createString(*p);
+ VALUE str = createString(seq[i]);
callRuby(rb_ary_push, argv[0], str);
}
}