utils: validate string before g_utf8_next_char()
This commit is contained in:
committed by
Dirk-Jan C. Binnema
parent
c3503ba663
commit
d0a3ca3453
@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "mu-utils.hh"
|
#include "mu-utils.hh"
|
||||||
#include "mu-util.h"
|
#include "mu-util.h"
|
||||||
|
#include "mu-str.h"
|
||||||
|
|
||||||
using namespace Mu;
|
using namespace Mu;
|
||||||
|
|
||||||
@ -131,8 +132,9 @@ std::string
|
|||||||
Mu::utf8_clean(const std::string& dirty)
|
Mu::utf8_clean(const std::string& dirty)
|
||||||
{
|
{
|
||||||
GString* gstr = g_string_sized_new(dirty.length());
|
GString* gstr = g_string_sized_new(dirty.length());
|
||||||
|
auto cstr = mu_str_utf8ify(dirty.c_str());
|
||||||
|
|
||||||
for (auto cur = dirty.c_str(); cur && *cur; cur = g_utf8_next_char(cur)) {
|
for (auto cur = cstr; cur && *cur; cur = g_utf8_next_char(cur)) {
|
||||||
const gunichar uc = g_utf8_get_char(cur);
|
const gunichar uc = g_utf8_get_char(cur);
|
||||||
if (g_unichar_iscntrl(uc))
|
if (g_unichar_iscntrl(uc))
|
||||||
g_string_append_c(gstr, ' ');
|
g_string_append_c(gstr, ' ');
|
||||||
@ -140,6 +142,7 @@ Mu::utf8_clean(const std::string& dirty)
|
|||||||
g_string_append_unichar(gstr, uc);
|
g_string_append_unichar(gstr, uc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free(cstr);
|
||||||
std::string clean(gstr->str, gstr->len);
|
std::string clean(gstr->str, gstr->len);
|
||||||
g_string_free(gstr, TRUE);
|
g_string_free(gstr, TRUE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user