Our LanguageParser uses words() to break up the name string of an EXTERNAL
option into an Array of words.  A comment for words() says "The first word
will be uppercased, and all of the strings will be added to the common
string pool."

The loop (see code below) that intends to add the second and further words
to the common pool has a bug (it uses 1 instead of i) so this pool is never
updated for these words.

Is it necessary to add the words to the common pool?
Just the first?  Or all?
If the failure to do so didn't hurt in the past, should I still fix the
loop or just remove it?

EXTERNAL name string parsing in the loadExternalMethod/Routine() methods
works differently, doesn't uppercase the first word and doesn't try to add
the parsed words to the common pool.
This means that currently you can specify the LIBRARY keyword in mixed-case
on the directives, but must uppercase it for the loadExternal..() methods.

~~~
    wordArray->put(commonString(((RexxString
*)wordArray->get(1))->upper()), 1);

    // now make commonstring versions of the rest of the words
    for (size_t i = 2; i <= count; i++)
    {
        wordArray->put(commonString(((RexxString *)wordArray->*get(1))),
1);*
    }
~~~
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to