#1432: CarpetLib::poison_new_memory when aligning memory --------------------+------------------------------------------------------- Reporter: rhaas | Owner: eschnett Type: defect | Status: new Priority: major | Milestone: Component: Carpet | Version: development version Keywords: | --------------------+------------------------------------------------------- looking at the poison code in CarpetLib's mem.cc it seems to me that the poisoning cdoe uses the wrong data pointer ie uses line 144 of mem.cc: {{{ total_allocated_bytes += nbytes; max_allocated_bytes = max (max_allocated_bytes, total_allocated_bytes); if (poison_new_memory) { memset (storage_, poison_value, nbytes); } }}} when in fact I think it should be {{{storage_base_}}} since this is the pointer to nbytes bytes of memory returned by malloc.
Attached please find a patch which tries to address this. Note that this only matters on systems where the vector lenght is large enough so that the "natural" alignment provided by malloc (at least 4 bytes I'd assume more likely actually 8 bytes).