]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_cmds.c
OGG_FreeSfx and WAV_FreeSfx no longer reference sfx_t
[xonotic/darkplaces.git] / prvm_cmds.c
index 6b5e8d6f55a433a9dd874ccd3a92f6e9d21f707d..fcf3d8ba40967301ca9134116435bc9ca4b52d12 100644 (file)
@@ -3802,9 +3802,10 @@ void VM_str2chr (void)
        const char *s;
        VM_SAFEPARMCOUNT(2, VM_str2chr);
        s = PRVM_G_STRING(OFS_PARM0);
-       if((unsigned)PRVM_G_FLOAT(OFS_PARM1) > strlen(s))
-               return;
-       PRVM_G_FLOAT(OFS_RETURN) = (unsigned char)s[(int)PRVM_G_FLOAT(OFS_PARM1)];
+       if((unsigned)PRVM_G_FLOAT(OFS_PARM1) < strlen(s))
+               PRVM_G_FLOAT(OFS_RETURN) = (unsigned char)s[(unsigned)PRVM_G_FLOAT(OFS_PARM1)];
+       else
+               PRVM_G_FLOAT(OFS_RETURN) = 0;
 }
 
 //#223 string(float c, ...) chr2str (FTE_STRINGS)
@@ -3952,42 +3953,14 @@ void VM_strpad (void)
 {
        char src[VM_STRINGTEMP_LENGTH];
        char destbuf[VM_STRINGTEMP_LENGTH];
-       char *dest = destbuf;
        int pad;
        VM_SAFEPARMCOUNTRANGE(1, 8, VM_strpad);
        pad = PRVM_G_FLOAT(OFS_PARM0);
        VM_VarString(1, src, sizeof(src));
 
-       if (pad < 0)
-       {       //pad left
-               pad = -pad - strlen(src);
-               if (pad>=VM_STRINGTEMP_LENGTH)
-                       pad = VM_STRINGTEMP_LENGTH-1;
-               if (pad < 0)
-                       pad = 0;
-
-               strlcpy(dest+pad, src, VM_STRINGTEMP_LENGTH-pad);
-               while(pad--)
-               {
-                       pad--;
-                       dest[pad] = ' ';
-               }
-       }
-       else
-       {       //pad right
-               if (pad>=VM_STRINGTEMP_LENGTH)
-                       pad = VM_STRINGTEMP_LENGTH-1;
-               pad -= strlen(src);
-               if (pad < 0)
-                       pad = 0;
-
-               strlcpy(dest, src, VM_STRINGTEMP_LENGTH);
-               dest+=strlen(dest);
-
-               while(pad-->0)
-                       *dest++ = ' ';
-               *dest = '\0';
-       }
+       // note: < 0 = left padding, > 0 = right padding,
+       // this is reverse logic of printf!
+       dpsnprintf(destbuf, sizeof(destbuf), "%*s", -pad, src);
 
        PRVM_G_INT(OFS_RETURN) = PRVM_SetTempString(destbuf);
 }