]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - prvm_exec.c
com: replace BSD strlcpy and strlcat
[xonotic/darkplaces.git] / prvm_exec.c
index e3ad8a8283295907ee0b684eadae80ee268f9ff6..ee738b9c3cbc0254d27ba7b199bae9676b1df96f 100644 (file)
@@ -434,10 +434,11 @@ void PRVM_ShortStackTrace(prvm_prog_t *prog, char *buf, size_t bufsize)
        mfunction_t     *f;
        int                     i;
        char vabuf[1024];
+       char *p;
 
        if(prog)
        {
-               dpsnprintf(buf, bufsize, "(%s) ", prog->name);
+               p = buf + max(0, dpsnprintf(buf, bufsize, "(%s) ", prog->name));
        }
        else
        {
@@ -450,13 +451,14 @@ void PRVM_ShortStackTrace(prvm_prog_t *prog, char *buf, size_t bufsize)
        for (i = prog->depth;i > 0;i--)
        {
                f = prog->stack[i].f;
-
-               if(dp_strlcat(buf,
+               p = dp_stpecpy(
+                       p,
+                       buf + bufsize,
                        f
                                ? va(vabuf, sizeof(vabuf), "%s:%s(%i) ", PRVM_GetString(prog, f->s_file), PRVM_GetString(prog, f->s_name), prog->stack[i].s - f->first_statement)
-                               : "<NULL> ",
-                       bufsize
-               ) >= bufsize)
+                               : "<NULL> "
+                       );
+               if (p == buf + bufsize)
                        break;
        }
 }