poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[COMMITTED] pkl: Fix pk_val_offset to properly check mapped values


From: Mohammad-Reza Nabipoor
Subject: [COMMITTED] pkl: Fix pk_val_offset to properly check mapped values
Date: Thu, 16 Sep 2021 10:29:41 +0430

2021-09-16  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>

        * libpoke/pk-val.c: Include `assert.h`.
        (pk_val_offset): Use `PVM_VAL_MAPPED_P` instead
        of checking `PVM_VAL_OFFSET` against `PVM_NULL`.
---
 ChangeLog        |  6 ++++++
 libpoke/pk-val.c | 13 ++++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cd75c583..73f44b55 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2021-09-16  Mohammad-Reza Nabipoor  <mnabipoor@gnu.org>
+
+       * libpoke/pk-val.c: Include `assert.h`.
+       (pk_val_offset): Use `PVM_VAL_MAPPED_P` instead
+       of checking `PVM_VAL_OFFSET` against `PVM_NULL`.
+
 2021-09-16  Guillermo E. Martinez  <guillermo.e.martinez@oracle.com>
 
        * doc/poke.texi (Poking a SBM Image): Fix typo.
diff --git a/libpoke/pk-val.c b/libpoke/pk-val.c
index 30a9ba5b..3da9bfa0 100644
--- a/libpoke/pk-val.c
+++ b/libpoke/pk-val.c
@@ -17,6 +17,7 @@
  */
 
 #include <config.h>
+#include <assert.h>
 
 #include "pvm.h"
 #include "pvm-val.h"
@@ -176,15 +177,18 @@ pk_val_set_ios (pk_val val, pk_val ios)
 pk_val
 pk_val_offset (pk_val val)
 {
-  pvm_val val_offset = PVM_VAL_OFFSET (val);
+  pvm_val val_offset;
   uint64_t bit_offset;
 
-  if (val_offset == PVM_NULL)
+  if (!PVM_VAL_MAPPED_P (val))
     return PK_NULL;
 
+  val_offset = PVM_VAL_OFFSET (val);
+  assert (val_offset != PVM_NULL);
+
   /* The offset in the PVM value is a bit-offset.  Convert to a proper
      offset.  */
-  bit_offset = PVM_VAL_ULONG (PVM_VAL_OFFSET (val));
+  bit_offset = PVM_VAL_ULONG (val_offset);
 
   /* XXX "upunit" properly so we get a nice unit, not just bytes or
      bits.  */
@@ -192,8 +196,7 @@ pk_val_offset (pk_val val)
     return pvm_make_offset (pvm_make_ulong (bit_offset / 8, 64),
                             pvm_make_ulong (8, 64));
   else
-    return pvm_make_offset (PVM_VAL_OFFSET (val),
-                            pvm_make_ulong (1, 64));
+    return pvm_make_offset (val_offset, pvm_make_ulong (1, 64));
 }
 
 void
-- 
2.33.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]