From f4e2399eab83e65a1b13daab3d5a7c1a148286f2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Sun, 3 Aug 1997 07:33:43 -0700
Subject: [PATCH] map fixed

Rev: lib/modules/Array.pmod:1.2
---
 lib/modules/Array.pmod | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/lib/modules/Array.pmod b/lib/modules/Array.pmod
index 604c6fee81..b16aad3d64 100644
--- a/lib/modules/Array.pmod
+++ b/lib/modules/Array.pmod
@@ -5,24 +5,28 @@ mixed map(mixed arr, mixed fun, mixed ... args)
   int e;
   mixed *ret;
 
-  if(mappingp(arr))
+  switch(sprintf("%t",fun))
+  {
+  case "mapping":
     return mkmapping(indices(arr),map(values(arr),fun,@args));
 
-  if(intp(fun))
+  case "int":
     return arr(@args);
-  
-  if(stringp(fun))
+
+  case "string":
     return column(arr, fun)(@args);
 
-  if(functionp(fun))
-  {
+  case "function":
+  case "program":
+  case "object":
     ret=allocate(sizeof(arr));
     for(e=0;e<sizeof(arr);e++)
       ret[e]=fun(arr[e],@args);
     return ret;
-  }
 
-  error("Bad argument 2 to map_array().\n");
+  default:
+    error("Bad argument 2 to map_array().\n");
+  }
 }
 
 mixed filter(mixed arr, mixed fun, mixed ... args)
-- 
GitLab