diff --git a/modules/web/html/bbcode_parser.cpp b/modules/web/html/bbcode_parser.cpp
index 8c67aad0b..6e059b4c1 100644
--- a/modules/web/html/bbcode_parser.cpp
+++ b/modules/web/html/bbcode_parser.cpp
@@ -472,7 +472,8 @@ void BBCodeParser::parse(const String &data) {
// tag
for (int j = i + 1; j < data.size(); ++j) {
if (data[j] == ']') {
- Ref t = memnew(BBCodeParserTag);
+ Ref t;
+ t.instance();
t->set_data(data.substr(i, j - i + 1));
t->process();
@@ -488,7 +489,8 @@ void BBCodeParser::parse(const String &data) {
for (int j = i + 1; j < data.size(); ++j) {
if (data[j] == '[') {
- Ref t = memnew(BBCodeParserTag);
+ Ref t;
+ t.instance();
t->set_data(data.substr(i, j - i));
t->set_type(BBCodeParserTag::BBCODE_PARSER_TAG_TYPE_CONTENT);
diff --git a/modules/web/html/html_parser.cpp b/modules/web/html/html_parser.cpp
index dd5e9ac54..2678c93d9 100644
--- a/modules/web/html/html_parser.cpp
+++ b/modules/web/html/html_parser.cpp
@@ -531,7 +531,8 @@ void HTMLParser::parse(const String &data) {
for (int j = i + 1; j < data.size(); ++j) {
if (data[j] == '>') {
- Ref t = memnew(HTMLParserTag);
+ Ref t;
+ t.instance();
t->set_data(data.substr(i, j - i + 1));
t->process();
@@ -547,7 +548,8 @@ void HTMLParser::parse(const String &data) {
for (int j = i + 1; j < data.size(); ++j) {
if (data[j] == '<') {
- Ref t = memnew(HTMLParserTag);
+ Ref t;
+ t.instance();
t->set_data(data.substr(i, j - i));
t->set_type(HTMLParserTag::HTML_PARSER_TAG_TYPE_CONTENT);
@@ -603,7 +605,8 @@ void HTMLParser::parse(const String &data) {
if (done) {
state = STATE_NONE;
- Ref t = memnew(HTMLParserTag);
+ Ref t;
+ t.instance();
t->set_data(data.substr(i, j - i));
t->set_type(HTMLParserTag::HTML_PARSER_TAG_TYPE_CONTENT);