Hi tech@,

In dc(1) the function array_free() knows how to skip a null pointer
so calling code doesn't need to avoid passing null.
Also, minor style (braces) clean-up.

- Michael
 

Index: bcode.c
===================================================================
RCS file: /cvs/src/usr.bin/dc/bcode.c,v
retrieving revision 1.48
diff -u -p -u -r1.48 bcode.c
--- bcode.c     3 Oct 2015 16:24:53 -0000       1.48
+++ bcode.c     10 Nov 2015 03:50:43 -0000
@@ -937,9 +937,8 @@ badd(void)
        struct number   *r;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -965,9 +964,8 @@ bsub(void)
        struct number   *r;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1014,9 +1012,8 @@ bmul(void)
        struct number   *r;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1040,9 +1037,8 @@ bdiv(void)
        BN_CTX          *ctx;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1078,9 +1074,8 @@ bmod(void)
        BN_CTX          *ctx;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1116,9 +1111,8 @@ bdivmod(void)
        BN_CTX          *ctx;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1158,9 +1152,8 @@ bexp(void)
        u_int           rscale;
 
        p = pop_number();
-       if (p == NULL) {
+       if (p == NULL)
                return;
-       }
        a = pop_number();
        if (a == NULL) {
                push_number(p);
@@ -1282,9 +1275,8 @@ bsqrt(void)
 
        onecount = 0;
        n = pop_number();
-       if (n == NULL) {
+       if (n == NULL)
                return;
-       }
        if (BN_is_zero(n->number)) {
                r = new_number();
                push_number(r);
@@ -1325,9 +1317,8 @@ not(void)
        struct number   *a;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        a->scale = 0;
        bn_check(BN_set_word(a->number, BN_get_word(a->number) ? 0 : 1));
        push_number(a);
@@ -1345,9 +1336,8 @@ equal_numbers(void)
        struct number *a, *b, *r;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1365,9 +1355,8 @@ less_numbers(void)
        struct number *a, *b, *r;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1385,9 +1374,8 @@ lesseq_numbers(void)
        struct number *a, *b, *r;
 
        a = pop_number();
-       if (a == NULL) {
+       if (a == NULL)
                return;
-       }
        b = pop_number();
        if (b == NULL) {
                push_number(a);
@@ -1711,9 +1699,8 @@ eval_tos(void)
        char *p;
 
        p = pop_string();
-       if (p == NULL)
-               return;
-       eval_string(p);
+       if (p != NULL)
+               eval_string(p);
 }
 
 void
Index: stack.c
===================================================================
RCS file: /cvs/src/usr.bin/dc/stack.c,v
retrieving revision 1.13
diff -u -p -u -r1.13 stack.c
--- stack.c     1 Dec 2014 13:13:00 -0000       1.13
+++ stack.c     10 Nov 2015 03:50:43 -0000
@@ -62,10 +62,8 @@ stack_free_value(struct value *v)
                free(v->u.string);
                break;
        }
-       if (v->array != NULL) {
-               array_free(v->array);
-               v->array = NULL;
-       }
+       array_free(v->array);
+       v->array = NULL;
 }
 
 /* Copy number or string content into already allocated target */
@@ -210,10 +208,8 @@ stack_popnumber(struct stack *stack)
 {
        if (stack_empty(stack))
                return NULL;
-       if (stack->stack[stack->sp].array != NULL) {
-               array_free(stack->stack[stack->sp].array);
-               stack->stack[stack->sp].array = NULL;
-       }
+       array_free(stack->stack[stack->sp].array);
+       stack->stack[stack->sp].array = NULL;
        if (stack->stack[stack->sp].type != BCODE_NUMBER) {
                warnx("not a number"); /* XXX remove */
                return NULL;
@@ -226,10 +222,8 @@ stack_popstring(struct stack *stack)
 {
        if (stack_empty(stack))
                return NULL;
-       if (stack->stack[stack->sp].array != NULL) {
-               array_free(stack->stack[stack->sp].array);
-               stack->stack[stack->sp].array = NULL;
-       }
+       array_free(stack->stack[stack->sp].array);
+       stack->stack[stack->sp].array = NULL;
        if (stack->stack[stack->sp].type != BCODE_STRING) {
                warnx("not a string"); /* XXX remove */
                return NULL;
@@ -240,9 +234,8 @@ stack_popstring(struct stack *stack)
 void
 stack_clear(struct stack *stack)
 {
-       while (stack->sp >= 0) {
+       while (stack->sp >= 0)
                stack_free_value(&stack->stack[stack->sp--]);
-       }
        free(stack->stack);
        stack_init(stack);
 }

Reply via email to