]> mj.ucw.cz Git - umpf.git/blobdiff - int.c
some bugfixes
[umpf.git] / int.c
diff --git a/int.c b/int.c
index d2146d754c042ffedab8b25fa234ce2677688365..60c40d502356c74e94a0080dda1ba1a46c3c42f5 100644 (file)
--- a/int.c
+++ b/int.c
@@ -75,7 +75,7 @@ set_cur_mail_length_var(int len, struct list* hash)
                return;
 
        buf = xmalloc(INT_TO_STRING_LEN);
-       sscanf(buf,"%d", &len);
+       sprintf(buf,"%d", len);
        set_var(pv->varcode, buf);
        free_string(buf);
 }
@@ -92,7 +92,7 @@ set_exit_code_var(int code, struct list* hash)
                return;
 
        buf = xmalloc(INT_TO_STRING_LEN);
-       sscanf(buf,"%d", &code);
+       sprintf(buf,"%d", code);
        set_var(pv->varcode, buf);
        free_string(buf);
 }
@@ -607,7 +607,7 @@ fix_content_length(struct list* h, int len)
                        found = 1;
                        free_string(ph->value);
                        ph->value = xmalloc(INT_TO_STRING_LEN);
-                       sscanf(ph->value, "%d", &len);
+                       sprintf(ph->value, "%d", len);
                        break;
                }
        }
@@ -615,7 +615,8 @@ fix_content_length(struct list* h, int len)
                char* buf, * tmpbuf;
                buf = xmalloc(INT_TO_STRING_LEN + strlen(clheader));
                tmpbuf = xmalloc(INT_TO_STRING_LEN);
-               sscanf(tmpbuf, "%d", &len);
+               sprintf(tmpbuf, "%d", len);
+               strcpy(buf, clheader);
                strcat(buf, tmpbuf);
                new_header(buf, h);
                free_string(buf); 
@@ -692,7 +693,9 @@ interp(struct list* ins, struct list* hash)
        LIST_FOREACH(p, ins) {
        switch (p->opcode) {
                case OPC_SET:
-                       set_var(p->u.set.l, get_var(p->u.set.r));
+                       result = get_var(p->u.set.r);
+                       set_var(p->u.set.l, result);
+                       free_string(result);
                        break;  
                case OPC_JUMP:
                        p = p->u.jump.target;
@@ -728,9 +731,11 @@ interp(struct list* ins, struct list* hash)
                        break;
                case OPC_NOT:
                        result = xmalloc(INT_TO_STRING_LEN);
-                       sscanf(get_var(p->u.tpop.l),"%d", &v);
+                       sscanf(get_var(p->u.dpop.par),"%d", &v);
                        sprintf(result, "%d", !v);
-                       set_var(p->u.tpop.res, result);
+                       set_var(p->u.dpop.res, result);
+                       free_string(result);
+                       break;
                case OPC_CAT:
                case OPC_RE:
                case OPC_NRE: