Index: lutinutil/src/java/org/codelutin/util/OptionParser.java diff -u lutinutil/src/java/org/codelutin/util/OptionParser.java:1.12 lutinutil/src/java/org/codelutin/util/OptionParser.java:1.13 --- lutinutil/src/java/org/codelutin/util/OptionParser.java:1.12 Sun Dec 16 22:30:33 2007 +++ lutinutil/src/java/org/codelutin/util/OptionParser.java Mon Dec 17 13:45:25 2007 @@ -357,7 +357,7 @@ continue; } // create a OptionContext - OptionContext optionContext = new OptionContext(this, definition, argsForOption.toArray(new String[argsForOption.size()]), pos, alias); + OptionContext optionContext = new OptionContext(this, definition, argsForOption.toArray(new String[argsForOption.size()]), start, alias); // try to add the context addSon(optionContext); } @@ -472,6 +472,12 @@ lastGroup = null; for (int i = 0; i < argumentsToTreate.length; i++) { String argument = argumentsToTreate[i]; + // always check if there is at least one group available + if (availabledGroups.isEmpty()) { + // fatal error: no more args to treate for this option + addError(_("lutinutil.parser.unavailable.option.argument", alias, argument,commandLinePosition+1+i)); + break; + } ArgumentContext argumentContext = detectArgument(argument, i); if (argumentContext == null) { // mark the argument as unused