PennMUSH Incorporation from 182p2
authorRick Bird <nveid@bender.theari.com>
Fri, 25 Mar 2011 18:08:21 +0000 (14:08 -0400)
committerRick Bird <nveid@bender.theari.com>
Fri, 25 Mar 2011 18:08:21 +0000 (14:08 -0400)
 * Garbled output of locks from examine. Reported by Intrevis. [SW].
 * script and compile script updates as well

hints/irix_6.sh
src/boolexp.c
src/lock.c
utils/mkcmds.sh.SH

index 091dc156935b69b1ff7529ba26252b5d9edf7dec..271f86e102e78501579d30f92bb0fdf90967fbf7 100644 (file)
@@ -1,4 +1,3 @@
-ccflags="-mabi=n32"
 loclibpth="/usr/local/lib /usr/gnu/lib /usr/lib32 /usr/lib /lib"
 libs="-lc -lm"
 has_sigchld='define'
index d099b88198e996cc81f8ebc11319c9ae6e2bc4d2..9158f8ba65b563d87f031e4a04a532790234e853 100644 (file)
@@ -778,6 +778,9 @@ safe_boref(dbref player, dbref thing, enum u_b_f flag, char *buff,
   }
 }
 
+/** True if unparse_boolexp() is being evaluated. */
+int unparsing_boolexp = 0;
+
 /** Display a boolexp.
  * This function returns the textual representation of the boolexp.
  * \param player The object wanting the decompiled boolexp.
@@ -792,6 +795,8 @@ unparse_boolexp(dbref player, boolexp b, enum u_b_f flag)
   char *buftop = boolexp_buf;
   unsigned char *bytecode = NULL;
 
+  unparsing_boolexp = 1;
+
   if (b == TRUE_BOOLEXP)
     safe_str("*UNLOCKED*", boolexp_buf, &buftop);
   else {
@@ -924,6 +929,7 @@ unparse_boolexp(dbref player, boolexp b, enum u_b_f flag)
   }
 done:
   *buftop++ = '\0';
+  unparsing_boolexp = 0;
 
   return boolexp_buf;
 }
index 20c6a01e491f3814b566e84b330c6dbd32ae1ae5..1e886c1be3c1ecb45aed327efc294fd0d7fee766 100644 (file)
@@ -155,6 +155,8 @@ static lock_list *free_list = NULL;
 static lock_list *next_free_lock(void);
 static void free_lock(lock_list *ll);
 
+extern int unparsing_boolexp;
+
 /** Return a list of all available locks
  * \param buff the buffer
  * \param bp a pointer to the current position in the buffer
@@ -800,9 +802,11 @@ int
 eval_lock(dbref player, dbref thing, lock_type ltype)
 {
   boolexp b = getlock(thing, ltype);
-  log_activity(LA_LOCK, thing, unparse_boolexp(player, b, UB_DBREF));
-  if(Pass_Lock(player, thing) && IS_passlock_type(ltype))
+ if(Pass_Lock(player, thing) && IS_passlock_type(ltype))
     return 1;
+  /* Prevent overwriting a static buffer in unparse_boolexp() */
+  if (!unparsing_boolexp)
+    log_activity(LA_LOCK, thing, unparse_boolexp(player, b, UB_DBREF));
   return eval_boolexp(player, getlock(thing, ltype), thing, NULL);
 }
 
index b558d1aad9b3c42581c677a07a9eb52212304b18..f4685acf9c53a079a40e42242fae5cbdad3f068a 100644 (file)
@@ -25,7 +25,7 @@ $spitshell >mkcmds.sh <<!GROK!THIS!
 $startsh
 echo=$echo
 n=$n
-c=$c
+c="$c"
 !GROK!THIS!
 
 : In the following dollars and backticks do not need the extra backslash.