Kaydet (Commit) 5d2210d5 authored tarafından Caolán McNamara's avatar Caolán McNamara

might as well go back to a std::stack now

after...

commit 8daf6707
Author: Michael Stahl <mstahl@redhat.com>
Date:   Thu Oct 6 23:37:51 2016 +0200

    xmloff: fix crash in ~XMLParaContext on fdo72541-1.fodt

Change-Id: I57f10e60a2f76dde048a594d8391bb5b246dfc63
üst 82e87b0d
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*/
#ifndef INCLUDED_O3TL_STACK_HXX
#define INCLUDED_O3TL_STACK_HXX
#include <stack>
namespace o3tl
{
/**
*
* Same as std::stack (it just wraps it) except at destruction time the
* container elements are destroyed in order starting from the top of the stack
* which is the order one would rather assume a stack uses, but doesn't have to
*
* https://connect.microsoft.com/VisualStudio/feedback/details/765649/std-vector-does-not-destruct-in-reverse-order-of-construction
*
**/
template<class T> class stack final
{
private:
typedef std::stack<T> stack_t;
stack_t mStack;
public:
T& top()
{
return mStack.top();
}
const T& top() const
{
return mStack.top();
}
void push(const T& val)
{
mStack.push(val);
}
void push(T&& val)
{
mStack.push(val);
}
void pop()
{
mStack.pop();
}
bool empty() const
{
return mStack.empty();
}
~stack()
{
while (!mStack.empty())
mStack.pop();
}
};
}
#endif /* INCLUDED_O3TL_STACK_HXX */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -23,7 +23,7 @@
#include <sal/config.h>
#include <set>
#include <o3tl/stack.hxx>
#include <stack>
#include <xmloff/dllapi.h>
#include <sal/types.h>
......@@ -86,8 +86,8 @@ class XMLErrors;
class StyleMap;
enum class SvXMLErrorFlags;
typedef o3tl::stack<SvXMLImportContextRef> SvXMLImportContexts_Impl;
typedef o3tl::stack<css::uno::Reference<css::xml::sax::XFastContextHandler>>
typedef std::stack<SvXMLImportContextRef> SvXMLImportContexts_Impl;
typedef std::stack<css::uno::Reference<css::xml::sax::XFastContextHandler>>
FastSvXMLImportContexts_Impl;
namespace xmloff {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment