This patch fixes "operation on 'v1' may be undefined" warning in sial_exeop().
In some places V1 and L1 where used as arguments at the same time.

It's from lkcdutils and has been there in CVS for a few month. Originally
written by Jan Blunck <[EMAIL PROTECTED]>.


Signed-off-by: Bernhard Walle <[EMAIL PROTECTED]>

---
 extensions/libsial/sial_op.c |   95 ++++++++++++++++++++++++++-----------------
 1 file changed, 59 insertions(+), 36 deletions(-)

--- a/extensions/libsial/sial_op.c
+++ b/extensions/libsial/sial_op.c
@@ -28,15 +28,15 @@ typedef struct {
 #define V3 (v3?v3:(v3=NODE_EXE(P3)))
 #define V4 (v4?v4:(v4=NODE_EXE(P4)))
 
-#define L1 (unival(v1?v1:V1))
-#define L2 (unival(v2?v2:V2))
-#define L3 (unival(v3?v3:V3))
-#define L4 (unival(v4?v4:V4))
-
-#define S1 ((v1?v1:V1)->v.data)
-#define S2 ((v2?v2:V2)->v.data)
-#define S3 ((v3?v3:V3)->v.data)
-#define S4 ((v4?v4:V4)->v.data)
+#define L1 (unival(V1))
+#define L2 (unival(V2))
+#define L3 (unival(V3))
+#define L4 (unival(V4))
+
+#define S1 ((V1)->v.data)
+#define S2 ((V2)->v.data)
+#define S3 ((V3)->v.data)
+#define S4 ((V4)->v.data)
 
 void sial_do_deref(int n, value_t *v, value_t *ref);
 ul
@@ -545,39 +545,53 @@ inval:
                        case ADD: {     /* expr + expr */
                                /* adding two pointers ? */
                                if(V2->type.type == V_REF) goto inval;
-                               sial_transfer(v=sial_newval(), V1, L1 + 
L2*size);
+
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) + L2 * size);
                        }
                        break;
                        case SUB: {     /* expr - expr */
-                               
                                /* different results if mixed types.
                                   if both are pointers then result is a V_BASE 
*/
                                if(V2->type.type == V_REF)
                                        v=sial_makebtype(L1 - L2);
 
-                               else sial_transfer(v=sial_newval(), V1, L1 - 
L2*size);
+                               else {
+                                       V1;
+                                       sial_transfer(v=sial_newval(), v1,
+                                                     unival(v1) - L2 * size);
+                               }
                        }
                        break;
                        case PREDECR: { /* pre is easy */
-                               sial_transfer(v=sial_newval(), V1, L1-size);
-                               sial_setval(V1, v);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) - size);
+                               sial_setval(v1, v);
                        }
                        break;
                        case PREINCR: {
-                               sial_transfer(v=sial_newval(), V1, L1+size);
-                               sial_setval(V1, v);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) + size);
+                               sial_setval(v1, v);
                        }
                        break;
                        case POSTINCR: {
-                               sial_transfer(v=sial_newval(), V1, L1+size);
-                               sial_setval(V1, v);
-                               sial_transfer(v, V1, L1);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) + size);
+                               sial_setval(v1, v);
+                               sial_transfer(v, v1, unival(v1));
                        }
                        break;
                        case POSTDECR: {
-                               sial_transfer(v=sial_newval(), V1, L1-size);
-                               sial_setval(V1, v);
-                               sial_transfer(v, V1, L1);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) - size);
+                               sial_setval(v1, v);
+                               sial_transfer(v, v1, unival(v1));
                        }
                        break;
                        default:
@@ -625,26 +639,33 @@ inval:
                        }
                        break;
                        case PREDECR: { /* pre is easy */
-                               sial_transfer(v=sial_newval(), V1, L1-1);
-                               sial_setval(V1, v);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) - 1);
+                               sial_setval(v1, v);
                        }
                        break;
                        case PREINCR: {
                                V1;
-                               sial_transfer(v=sial_newval(), V1, L1+1);
-                               sial_setval(V1, v);
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) + 1);
+                               sial_setval(v1, v);
                        }
                        break;
                        case POSTINCR: {
-                               sial_transfer(v=sial_newval(), V1, L1+1);
-                               sial_setval(V1, v);
-                               sial_transfer(v, V1, L1);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) + 1);
+                               sial_setval(v1, v);
+                               sial_transfer(v, v1, unival(v1));
                        }
                        break;
                        case POSTDECR: {
-                               sial_transfer(v=sial_newval(), V1, L1-1);
-                               sial_setval(V1, v);
-                               sial_transfer(v, V1, L1);
+                               V1;
+                               sial_transfer(v=sial_newval(), v1,
+                                             unival(v1) - 1);
+                               sial_setval(v1, v);
+                               sial_transfer(v, v1, unival(v1));
                        }
                        break;
                        default: sial_rerror(&P1->pos, "Oops ops ! [%d]", top);
@@ -682,12 +703,14 @@ doop:
                        else {
 
                                /* if it's a Me-op then v is already set */
-                               if(top != o->op) { sial_setval(V1, v); }
-                               else {
-
-                                       sial_setval(V1, V2);
+                               V1;
+                               if(top != o->op) {
+                                       sial_setval(v1, v);
+                               } else {
+                                       sial_setval(v1, V2);
                                        v=sial_cloneval(V2);
                                }
+
                        }
                }
                /* the result of a assignment if not an Lvalue_t */

--
Crash-utility mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/crash-utility

Reply via email to