Fix: Address a few minor issues identified by cppcheck
authorAndreas Hansson <andreas.hansson@arm.com>
Mon, 15 Oct 2012 12:12:23 +0000 (08:12 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Mon, 15 Oct 2012 12:12:23 +0000 (08:12 -0400)
This patch addresses a number of smaller issues identified by the code
inspection utility cppcheck. There are a number of identified leaks in
the arm/linux/system.cc (although the function only get's called once
so it is not a major problem), a few deletes in dev/x86/i8042.cc that
were not array deletes, and sprintfs where the character array had one
element less than needed. In the IIC tags there was a function
allocating an array of longs which is in fact never used.

src/arch/arm/linux/system.cc
src/cpu/legiontrace.cc
src/dev/x86/i8042.cc
src/mem/cache/tags/iic_repl/gen.cc
src/mem/cache/tags/iic_repl/gen.hh
src/mem/cache/tags/iic_repl/repl.hh

index d9684fe66cb398fc7a73c9b55cba99bfa7eb1c49..1347e472df1cc113aee5c70c4867a89dd4790199 100644 (file)
@@ -154,40 +154,43 @@ LinuxArmSystem::initState()
             warn("DTB file specified, but no device tree support in kernel\n");
         }
 
-        AtagCore *ac = new AtagCore;
-        ac->flags(1); // read-only
-        ac->pagesize(8192);
-        ac->rootdev(0);
+        AtagCore ac;
+        ac.flags(1); // read-only
+        ac.pagesize(8192);
+        ac.rootdev(0);
 
         AddrRangeList atagRanges = physmem.getConfAddrRanges();
         if (atagRanges.size() != 1) {
             fatal("Expected a single ATAG memory entry but got %d\n",
                   atagRanges.size());
         }
-        AtagMem *am = new AtagMem;
-        am->memSize(atagRanges.begin()->size());
-        am->memStart(atagRanges.begin()->start);
+        AtagMem am;
+        am.memSize(atagRanges.begin()->size());
+        am.memStart(atagRanges.begin()->start);
 
-        AtagCmdline *ad = new AtagCmdline;
-        ad->cmdline(params()->boot_osflags);
+        AtagCmdline ad;
+        ad.cmdline(params()->boot_osflags);
 
-        DPRINTF(Loader, "boot command line %d bytes: %s\n", ad->size() <<2, params()->boot_osflags.c_str());
+        DPRINTF(Loader, "boot command line %d bytes: %s\n",
+                ad.size() <<2, params()->boot_osflags.c_str());
 
-        AtagNone *an = new AtagNone;
+        AtagNone an;
 
-        uint32_t size = ac->size() + am->size() + ad->size() + an->size();
+        uint32_t size = ac.size() + am.size() + ad.size() + an.size();
         uint32_t offset = 0;
         uint8_t *boot_data = new uint8_t[size << 2];
 
-        offset += ac->copyOut(boot_data + offset);
-        offset += am->copyOut(boot_data + offset);
-        offset += ad->copyOut(boot_data + offset);
-        offset += an->copyOut(boot_data + offset);
+        offset += ac.copyOut(boot_data + offset);
+        offset += am.copyOut(boot_data + offset);
+        offset += ad.copyOut(boot_data + offset);
+        offset += an.copyOut(boot_data + offset);
 
         DPRINTF(Loader, "Boot atags was %d bytes in total\n", size << 2);
         DDUMP(Loader, boot_data, size << 2);
 
         physProxy.writeBlob(params()->atags_addr, boot_data, size << 2);
+
+        delete[] boot_data;
     }
 
     for (int i = 0; i < threadContexts.size(); i++) {
index c000f57fced976530e87368b174c5d468a06ffb2..f3ac5e7028cb17a3e2ad91812ca58f499280016e 100644 (file)
@@ -536,7 +536,7 @@ Trace::LegionTraceRecord::dump()
                     }
                     if (diffTlb) {
                         printColumnLabels(outs);
-                        char label[8];
+                        char label[9];
                         for (int x = 0; x < 64; x++) {
                             if (shared_data->itb[x] !=
                                     ULL(0xFFFFFFFFFFFFFFFF) ||
index 1e646481573529ebc745a7fe1056b1546caa967c..1fc50db15f290950b3df9d6e4555275d10586a3f 100644 (file)
@@ -490,7 +490,7 @@ X86ISA::PS2Keyboard::serialize(const std::string &base, std::ostream &os)
     }
     arrayParamOut(os, base + ".outBuffer.elts", buffer,
             bufferSize*sizeof(uint8_t));
-    delete buffer;
+    delete[] buffer;
 }
 
 void
@@ -506,7 +506,7 @@ X86ISA::PS2Keyboard::unserialize(const std::string &base, Checkpoint *cp,
     for (int i = 0; i < bufferSize; ++i) {
         outBuffer.push(buffer[i]);
     }
-    delete buffer;
+    delete[] buffer;
 }
 
 void
@@ -523,7 +523,7 @@ X86ISA::PS2Mouse::serialize(const std::string &base, std::ostream &os)
     }
     arrayParamOut(os, base + ".outBuffer.elts", buffer,
             bufferSize*sizeof(uint8_t));
-    delete buffer;
+    delete[] buffer;
     paramOut(os, base + ".status", statusData);
     paramOut(os, base + ".resolution", resolution);
     paramOut(os, base + ".sampleRate", sampleRate);
@@ -543,7 +543,7 @@ X86ISA::PS2Mouse::unserialize(const std::string &base, Checkpoint *cp,
     for (int i = 0; i < bufferSize; ++i) {
         outBuffer.push(buffer[i]);
     }
-    delete buffer;
+    delete[] buffer;
     paramIn(cp, section, base + ".status", statusData);
     paramIn(cp, section, base + ".resolution", resolution);
     paramIn(cp, section, base + ".sampleRate", sampleRate);
index 137130b27bb8c55ba3706ca4d79707bfb1b9a465..3212b74ab50288caf36a99249830906fa4ab454f 100644 (file)
@@ -93,45 +93,6 @@ GenRepl::getRepl()
     return 0xffffffff;
 }
 
-unsigned long *
-GenRepl::getNRepl(int n)
-{
-    unsigned long *tmp;
-    GenReplEntry *re;
-    int i;
-    if (!(num_pool_entries>(n-1))) {
-        fatal("Not enough blks available to replace");
-    }
-    num_entries -= n;
-    num_pool_entries -= n;
-    tmp = new unsigned long[n]; /* array of cache_blk pointers */
-    int blk_index = 0;
-    for (i = 0; i < num_pools && blk_index < n; i++) {
-        while (blk_index < n && (re = pools[i].pop())) {
-            // Remove invalidated entries
-            if (!re->valid) {
-                delete re;
-                continue;
-            }
-            if (iic->clearRef(re->tag_ptr)) {
-                pools[(((i+1)== num_pools)? i :i+1)].push(re, misses);
-            }
-            else {
-                tmp[blk_index] = re->tag_ptr;
-                blk_index++;
-                delete re;
-                repl_pool.sample(i);
-            }
-        }
-    }
-    if (blk_index >= n)
-        return tmp;
-    /* search the fresh pool */
-
-    fatal("No N  replacements found");
-    return NULL;
-}
-
 void
 GenRepl::doAdvance(std::list<unsigned long> &demoted)
 {
index cbd15a6fddf92f54f2ab5d456d97bacdc69b8d50..2e817d847d6e9ead999875195c18c02e92a94b25 100644 (file)
@@ -185,13 +185,6 @@ class GenRepl : public Repl
      */
     virtual unsigned long getRepl();
 
-    /**
-     * Return an array of N tag pointers to replace.
-     * @param n The number of tag pointer to return.
-     * @return An array of tag pointers to replace.
-     */
-    virtual unsigned long *getNRepl(int n);
-
     /**
      * Update replacement data
      */
index 51d8169e9982167a1920cf541f049d2081bc4bf6..dd25842a0fe9c1c15d563fe94f4eec8ad2b36072 100644 (file)
@@ -78,13 +78,6 @@ class Repl : public SimObject
      */
     virtual unsigned long getRepl() = 0;
 
-    /**
-     * Return an array of N tag pointers to replace.
-     * @param n The number of tag pointer to return.
-     * @return An array of tag pointers to replace.
-     */
-    virtual unsigned long  *getNRepl(int n) = 0;
-
     /**
      * Update replacement data
      */