Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-1.1
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-1.1
Commits
07a682d7
Commit
07a682d7
authored
Sep 22, 2008
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Properly handle < > & " in html text renderer.
parent
0c4e17d8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
13 deletions
+55
-13
modules/misc/text_renderer.h
modules/misc/text_renderer.h
+55
-13
No files found.
modules/misc/text_renderer.h
View file @
07a682d7
...
...
@@ -475,6 +475,58 @@ static void SetupKaraoke( xml_reader_t *p_xml_reader, uint32_t *pi_k_runs,
}
}
/* Turn any multiple-whitespaces into single spaces */
static
void
HandleWhiteSpace
(
char
*
psz_node
)
{
char
*
s
=
strpbrk
(
psz_node
,
"
\t\r\n
"
);
while
(
s
)
{
int
i_whitespace
=
strspn
(
s
,
"
\t\r\n
"
);
if
(
i_whitespace
>
1
)
memmove
(
&
s
[
1
],
&
s
[
i_whitespace
],
strlen
(
s
)
-
i_whitespace
+
1
);
*
s
++
=
' '
;
s
=
strpbrk
(
s
,
"
\t\r\n
"
);
}
}
/* */
static
void
HandleMarkup
(
char
*
psz_node
)
{
static
const
struct
{
const
char
*
psz_pattern
;
char
i_char
;
}
p_replace
[]
=
{
{
"<"
,
'<'
},
{
">"
,
'>'
},
{
"&"
,
'&'
},
{
"""
,
'"'
},
/* This one will always match */
{
"&"
,
'&'
}
};
char
*
s
=
psz_node
;
while
(
(
s
=
strchr
(
s
,
'&'
)
)
!=
NULL
)
{
size_t
i_size
;
int
i
;
for
(
i
=
0
;
;
i
++
)
{
i_size
=
strlen
(
p_replace
[
i
].
psz_pattern
);
if
(
!
strncmp
(
s
,
p_replace
[
i
].
psz_pattern
,
i_size
)
)
break
;
}
if
(
i_size
>
1
)
memmove
(
&
s
[
1
],
&
s
[
i_size
],
strlen
(
s
)
-
i_size
+
1
);
*
s
++
=
p_replace
[
i
].
i_char
;
}
}
static
int
ProcessNodes
(
filter_t
*
p_filter
,
xml_reader_t
*
p_xml_reader
,
text_style_t
*
p_font_style
,
...
...
@@ -600,20 +652,10 @@ static int ProcessNodes( filter_t *p_filter,
psz_node
=
xml_ReaderValue
(
p_xml_reader
);
if
(
psz_node
)
{
/* Turn any multiple-whitespaces into single spaces */
char
*
s
=
strpbrk
(
psz_node
,
"
\t\r\n
"
);
while
(
s
)
{
int
i_whitespace
=
strspn
(
s
,
"
\t\r\n
"
);
/* */
HandleWhiteSpace
(
psz_node
);
HandleMarkup
(
psz_node
);
if
(
i_whitespace
>
1
)
memmove
(
&
s
[
1
],
&
s
[
i_whitespace
],
strlen
(
s
)
-
i_whitespace
+
1
);
*
s
++
=
' '
;
s
=
strpbrk
(
s
,
"
\t\r\n
"
);
}
SetupLine
(
p_filter
,
psz_node
,
&
psz_text
,
pi_runs
,
ppi_run_lengths
,
ppp_styles
,
GetStyleFromFontStack
(
p_sys
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment