aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/stack.ixx
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/cxx/stack.ixx
parent60329bef10f114dac7b9a01d9cd83d6ed25e97ac (diff)
Don't use non-portable zero-sized array member
Diffstat (limited to 'libxsde/xsde/cxx/stack.ixx')
-rw-r--r--libxsde/xsde/cxx/stack.ixx10
1 files changed, 7 insertions, 3 deletions
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::