From: Pasi Kallinen <paxed@alt.org>
Date: Wed, 28 Dec 2016 20:52:02 +0000 (+0200)
Subject: Silence some Valgrind errors
X-Git-Tag: NetHack-3.6.1_RC01~538
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=24f934dfea2d4e57a186cb863519b83395d60000;p=nethack

Silence some Valgrind errors

Need to have the allocated memory explicitly cleared for Valgrind
to know it.  We should probably start using calloc or something...
---

diff --git a/src/engrave.c b/src/engrave.c
index faa813351..6bb71b9cd 100644
--- a/src/engrave.c
+++ b/src/engrave.c
@@ -385,11 +385,12 @@ long e_time;
 xchar e_type;
 {
     struct engr *ep;
+    unsigned smem = strlen(s) + 1;
 
     if ((ep = engr_at(x, y)) != 0)
         del_engr(ep);
-    ep = newengr(strlen(s) + 1);
-    (void) memset((genericptr_t)ep, 0, sizeof(struct engr));
+    ep = newengr(smem);
+    (void) memset((genericptr_t)ep, 0, smem + sizeof(struct engr));
     ep->nxt_engr = head_engr;
     head_engr = ep;
     ep->engr_x = x;
@@ -401,7 +402,7 @@ xchar e_type;
         exercise(A_WIS, TRUE);
     ep->engr_time = e_time;
     ep->engr_type = e_type > 0 ? e_type : rnd(N_ENGRAVE - 1);
-    ep->engr_lth = strlen(s) + 1;
+    ep->engr_lth = smem;
 }
 
 /* delete any engraving at location <x,y> */
diff --git a/src/region.c b/src/region.c
index 3ab0317b2..b38936c81 100644
--- a/src/region.c
+++ b/src/region.c
@@ -91,6 +91,7 @@ int nrect;
     NhRegion *reg;
 
     reg = (NhRegion *) alloc(sizeof(NhRegion));
+    (void) memset((genericptr_t)reg, 0, sizeof(NhRegion));
     /* Determines bounding box */
     if (nrect > 0) {
         reg->bounding_box = rects[0];
diff --git a/src/shk.c b/src/shk.c
index a914a56d7..abd9a33b0 100644
--- a/src/shk.c
+++ b/src/shk.c
@@ -3307,6 +3307,7 @@ long cost;
             return;
         }
     tmp_dam = (struct damage *) alloc((unsigned) sizeof(struct damage));
+    (void) memset((genericptr_t)tmp_dam, 0, sizeof(struct damage));
     tmp_dam->when = monstermoves;
     tmp_dam->place.x = x;
     tmp_dam->place.y = y;