OSDN Git Service

Null pointer check added
[hengband/hengband.git] / src / util.c
index dd42052..b626282 100644 (file)
@@ -293,7 +293,11 @@ static errr path_temp(char *buf, int max)
        if (!s) return (-1);
 
        /* Format to length */
+#ifndef WIN32
        (void)strnfmt(buf, max, "%s", s);
+#else
+       (void)strnfmt(buf, max, ".%s", s);
+#endif
 
        /* Success */
        return (0);
@@ -2451,7 +2455,7 @@ void message_add(cptr str)
                }
 
                /* Limit the multiplier to 1000 */
-               if (buf && streq(buf, str) && (j < 1000))
+               if (streq(buf, str) && (j < 1000))
                {
                        j++;
 
@@ -3622,7 +3626,10 @@ bool get_com(cptr prompt, char *command, bool z_escape)
        prt(prompt, 0, 0);
 
        /* Get a key */
-       *command = inkey();
+       if (get_com_no_macros)
+               *command = inkey_special(FALSE);
+       else
+               *command = inkey();
 
        /* Clear the prompt */
        prt("", 0, 0);
@@ -4846,14 +4853,9 @@ static void swap(tag_type *a, tag_type *b)
 {
        tag_type temp;
 
-       temp.tag = a->tag;
-       temp.pointer = a->pointer;
-
-       a->tag = b->tag;
-       a->pointer = b->pointer;
-
-       b->tag = temp.tag;
-       b->pointer = temp.pointer;
+       temp = *a;
+       *a = *b;
+       *b = temp;
 }
 
 
@@ -5214,26 +5216,29 @@ size_t my_strcpy(char *buf, const char *src, size_t bufsize)
        const char *s = src;
        size_t len = 0;
 
-       /* reserve for NUL termination */
-       bufsize--;
+       if (bufsize > 0) {
+               /* reserve for NUL termination */
+               bufsize--;
 
-       /* Copy as many bytes as will fit */
-       while (len < bufsize)
-       {
-               if (iskanji(*s))
+               /* Copy as many bytes as will fit */
+               while (*s && (len < bufsize))
                {
-                       if (len + 1 >= bufsize || !*(s+1)) break;
-                       *d++ = *s++;
-                       *d++ = *s++;
-                       len += 2;
-               }
-               else
-               {
-                       *d++ = *s++;
-                       len++;
+                       if (iskanji(*s))
+                       {
+                               if (len + 1 >= bufsize || !*(s+1)) break;
+                               *d++ = *s++;
+                               *d++ = *s++;
+                               len += 2;
+                       }
+                       else
+                       {
+                               *d++ = *s++;
+                               len++;
+                       }
                }
+               *d = '\0';
        }
-       *d = '\0';
+
        while(*s++) len++;
 
        return len;