aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-10-05 09:43:58 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-10-05 09:43:58 +0200
commit1edc58b6ac3ef85928f4a073626036e9a75532ab (patch)
treeb01b42642bd17ecae4f3dbca4b061487037de252 /libxsde/xsde
parent60329bef10f114dac7b9a01d9cd83d6ed25e97ac (diff)
Don't use non-portable zero-sized array member
Diffstat (limited to 'libxsde/xsde')
-rw-r--r--libxsde/xsde/cxx/stack.hxx2
-rw-r--r--libxsde/xsde/cxx/stack.ixx10
2 files changed, 8 insertions, 4 deletions
diff --git a/libxsde/xsde/cxx/stack.hxx b/libxsde/xsde/cxx/stack.hxx
index a8f26f2..5a947df 100644
--- a/libxsde/xsde/cxx/stack.hxx
+++ b/libxsde/xsde/cxx/stack.hxx
@@ -82,7 +82,7 @@ namespace xsde
{
block* prev;
block* next;
- char data[0]; // Sufficiently padded (2 * sizeof(void*)).
+ //char data[0]; Sufficiently padded (2 * sizeof(void*)).
};
size_t el_size_; // Element size in bytes.
diff --git a/libxsde/xsde/cxx/stack.ixx b/libxsde/xsde/cxx/stack.ixx
index 1f947df..d0544db 100644
--- a/libxsde/xsde/cxx/stack.ixx
+++ b/libxsde/xsde/cxx/stack.ixx
@@ -70,9 +70,13 @@ namespace xsde
inline void* stack::
top ()
{
- return cap_ == 1
- ? static_cast<void*> (cur_)
- : static_cast<void*> (cur_->data + (num_ - 1) * el_size_);
+ if (cap_ == 1)
+ return cur_;
+ else
+ {
+ char* data = reinterpret_cast<char*> (cur_) + sizeof (block);
+ return data + (num_ - 1) * el_size_;
+ }
}
inline void stack::