From 44e7aa7d61f120a02cf0aff02d499a7fc6afbf23 Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Tue, 22 Jan 2013 15:15:49 +0100 Subject: [PATCH] acpi: fix uninitialized members of element object The default constructor didn't initialize all members, some of them holding pointers. In the de-constructor the _name pointer was tried to free up, even when it was not initialized. Avoid any hassle for uninitialized members and just initialize it. Fixes sporadic page fault on x86_64 base-nova. Issue #155 --- os/src/drivers/acpi/acpi.cc | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/os/src/drivers/acpi/acpi.cc b/os/src/drivers/acpi/acpi.cc index 4190365f29..a73a2f51fa 100644 --- a/os/src/drivers/acpi/acpi.cc +++ b/os/src/drivers/acpi/acpi.cc @@ -600,11 +600,14 @@ class Element : public List::Element } } - Element(uint8_t const *data, bool package_op4 = false) + Element(uint8_t const *data = 0, bool package_op4 = false) : _type(0), _size(0), _size_len(0), _name(0), _name_len(0), _bdf(0), _data(data), _valid(false), _routed(false), _pci(0) { + if (!data) + return; + /* special handle for four value packet */ if (package_op4) { /* scan for data package with four entries */ @@ -663,11 +666,6 @@ class Element : public List::Element } } - /** - * Default constructor - */ - Element() : _valid(false) {} - /** * Copy constructor */