Bug #3639 » 0001-Fix-two-leaks-with-internal-stylesheets-in-Render.patch
| src/Wt/Render/Block.C | ||
|---|---|---|
|
for (unsigned int i = 0; i < children_.size(); ++i) {
|
||
|
if (children_[i]->type_ == DomElement_STYLE) {
|
||
|
ss << Render::Utils::nodeValueToString(children_[i]->node_);
|
||
|
delete children_[i];
|
||
|
children_.erase(children_.begin() + i);
|
||
|
--i;
|
||
|
} else
|
||
| src/Wt/Render/WTextRenderer.C | ||
|---|---|---|
|
{
|
||
|
public:
|
||
|
CombinedStyleSheet() { }
|
||
|
virtual ~CombinedStyleSheet() { }
|
||
|
virtual ~CombinedStyleSheet() {
|
||
|
for (unsigned i = 0; i < sheets_.size(); ++i)
|
||
|
if (!sheets_not_owned_.count(sheets_[i]))
|
||
|
delete sheets_[i];
|
||
|
}
|
||
|
void use(StyleSheet *sh) {
|
||
|
void use(StyleSheet *sh, bool noFree = false) {
|
||
|
sheets_.push_back(sh);
|
||
|
if (noFree)
|
||
|
sheets_not_owned_.insert(sh);
|
||
|
}
|
||
|
virtual unsigned int rulesetSize() const {
|
||
| ... | ... | |
|
private:
|
||
|
std::vector<StyleSheet *> sheets_;
|
||
|
std::set<StyleSheet *> sheets_not_owned_;
|
||
|
};
|
||
|
WTextRenderer::Node::Node(Block& block, LayoutBox& lb,
|
||
| ... | ... | |
|
CombinedStyleSheet styles;
|
||
|
if (styleSheet_)
|
||
|
styles.use(styleSheet_);
|
||
|
styles.use(styleSheet_, true);
|
||
|
WStringStream ss;
|
||
|
docBlock.collectStyles(ss);
|
||
| test/paintdevice/WRasterTest.C | ||
|---|---|---|
|
*
|
||
|
* See the LICENSE file for terms of use.
|
||
|
*/
|
||
|
#include <Wt/WConfig.h>
|
||
|
#ifdef WT_HAS_WRASTERIMAGE
|
||
|
#include <boost/test/unit_test.hpp>
|
||
| ... | ... | |
|
rasterImage.write(f);
|
||
|
}
|
||
|
BOOST_AUTO_TEST_CASE( raster_test_text_embedded_stylesheet )
|
||
|
{
|
||
|
Wt::Test::WTestEnvironment environment;
|
||
|
Wt::WApplication app(environment);
|
||
|
Wt::WRasterImage rasterImage("png", 357, 193);
|
||
|
{
|
||
|
Wt::WPainter p(&rasterImage);
|
||
|
std::string text =
|
||
|
"<style>"
|
||
|
"table {width:357px;}"
|
||
|
"td {padding: 0px; height: 193px; color: #f71175;"
|
||
|
"text-align: left; vertical-align: top; font-family: Arial;"
|
||
|
"font-size: 60.0pt; font-weight: normal;}"
|
||
|
"</style>"
|
||
|
"<table><tr><td>xxx</td></tr></table>";
|
||
|
MultiLineTextRenderer renderer(p, WRectF(0, 0, 357, 193));
|
||
|
renderer.render(text);
|
||
|
}
|
||
|
std::ofstream f("text_render_image_2.png");
|
||
|
rasterImage.write(f);
|
||
|
}
|
||
|
BOOST_AUTO_TEST_CASE( raster_test_dataUriImage )
|
||
|
{
|
||
|
Wt::Test::WTestEnvironment environment;
|
||