diff --git a/src/main.c b/src/main.c
index 7c16e8ae8aceea1af633ade80519e52614d5f826..6b596c3de14cf60566ecc9aae324916c2c888952 100644
--- a/src/main.c
+++ b/src/main.c
@@ -504,23 +504,26 @@ static int getparameter(char *flag, /* f or -long-flag */
   if('-' == flag[0]) {
     /* try a long name */
     int fnam=strlen(&flag[1]);
+    int numhits=0;
     for(j=0; j< sizeof(aliases)/sizeof(aliases[0]); j++) {
       if(strnequal(aliases[j].lname, &flag[1], fnam)) {
         longopt = TRUE;
+        numhits++;
         if(strequal(aliases[j].lname, &flag[1])) {
           parse = aliases[j].letter;
           hit = j;
+          numhits = 1; /* a single unique hit */
           break;
         }
-	if(parse) {
-	  /* this is the second match, we can't continue! */
-	  helpf("option --%s is ambiguous\n", &flag[1]);
-	  return CURLE_FAILED_INIT;
-	}
 	parse = aliases[j].letter;
 	hit = j;
       }
     }
+    if(numhits>1) {
+      /* this is at least the second match! */
+      helpf("option --%s is ambiguous\n", &flag[1]);
+      return CURLE_FAILED_INIT;
+    }
     if(hit < 0) {
       helpf("unknown option -%s.\n", flag);
       return CURLE_FAILED_INIT;