diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-10-05 09:43:58 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-10-05 09:43:58 +0200 |
commit | 1edc58b6ac3ef85928f4a073626036e9a75532ab (patch) | |
tree | b01b42642bd17ecae4f3dbca4b061487037de252 /libxsde | |
parent | 60329bef10f114dac7b9a01d9cd83d6ed25e97ac (diff) |
Don't use non-portable zero-sized array member
Diffstat (limited to 'libxsde')
-rw-r--r-- | libxsde/xsde/cxx/stack.hxx | 2 | ||||
-rw-r--r-- | libxsde/xsde/cxx/stack.ixx | 10 |
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:: |