preproc: handle empty expansion in %map

%map(foo) should expand to the empty string, but instead crashed NASM.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
diff --git a/asm/preproc.c b/asm/preproc.c
index 08734d3..013ab73 100644
--- a/asm/preproc.c
+++ b/asm/preproc.c
@@ -7449,7 +7449,6 @@
     if (nparam % mparams) {
         nasm_nonfatal("%s expected a multiple of %d expansion parameters, got %d\n",
                       s->name, mparams, nparam);
-        nparam -= nparam % mparams;
     }
 
     ctx = get_ctx(mname, &ctxname);
@@ -7460,6 +7459,9 @@
         return NULL;
     }
 
+    if (nparam < mparams)
+        return NULL;            /* Empty expansion */
+
     greedify = 0;
     if (unlikely(mparams > smac->nparam)) {
         if (smac->params[smac->nparam-1].flags & SPARM_GREEDY)
@@ -7493,7 +7495,7 @@
         }
 
         nparam -= mparams;
-        if (!nparam)
+        if (nparam < mparams)
             break;
 
         params += mparams;