François Cartegnie pushed to branch 3.0.x at VideoLAN / VLC
Commits:
1ef23d3e by Rémi Denis-Courmont at 2026-01-09T17:26:34+01:00
css: update deprecated statement, fix warning
(cherry picked from commit 9d1c890519c8b94ca47ebe09281db99f093b73aa)
- - - - -
227f92a4 by Rémi Denis-Courmont at 2026-01-09T17:26:34+01:00
webvtt: yyerror() should return void
This is the return type recommended by the GNU/Bison reference infodoc.
Refs #27180.
(cherry picked from commit 4c9999640aafa551e5d2b585aa01baf233dfee4d)
- - - - -
d706bba2 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: use full pure directive
workaround autoconf misdetection
(cherry picked from commit 6e223d67aef8313a67c3a68df1af2b9847261397)
- - - - -
83cd83d3 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix yylex decl mismatch
refs #21989
(cherry picked from commit d2ee7e8602b065219f9637d561b513d87ba59be0)
- - - - -
442487c9 by Alexandre Janniaux at 2026-01-09T17:26:34+01:00
CSSGrammar: refactor lex/parse-param
Scanner is used by both lexer and parser, so %param allows binding to
both, and css_parser is only used by the parser so there is no need to
declare it in the yylex function. As the function was not correctly
exposed to the lexer code, it was leading to different prototype for
both generated compile unit.
(cherry picked from commit b8a4ccee33423f4b1a6d48ca2def1a06a6ae93d6)
- - - - -
9eeb3786 by Mehdi Sabwat at 2026-01-09T17:26:34+01:00
webvtt: rename css parser
ylwrap expects the generated scanner file to be lex.yy.c. The prefix feature in
yacc and lex will make sure yy will be replaced by prefix (css in this case).
Functions used outside the generated code will have to be correctly named
(exccept YYSTYPE).
(cherry picked from commit 5fde254a2c61f6dee589def657c38ee19258cb48)
- - - - -
0f5c3a4d by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: css: tokenize missing attribute selectors
(cherry picked from commit 1cb7740a133bea385537ad6c34c2a3062dec1c12)
- - - - -
ff2d0be5 by Marvin Scholz at 2026-01-09T17:26:34+01:00
webvtt: make ambiguous character ranges case-sensitive
These ranges are already covering the relevant ranges without being
case-insensitive, but if they are case-sensitive, for locales that have
can deal with some characters in these ranges, it makes the range
ambiguous and results in warnings about this:
CSSLexer.l:105: warning, the character range [?-?] is ambiguous in a
case-insensitive scanner
(cherry picked from commit b252236cff1c9cd0352f6fb5c7a128df8372368d)
- - - - -
e072f7e7 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix leak on failed chained selectors
refs #29451
(cherry picked from commit 096eecd285c302b0343dfd9bf29e768d2098fc8b)
- - - - -
3a092bd4 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix bogus check
(cherry picked from commit 3270c3cf818c67a04f0b7d55f355694ade5ca07c)
- - - - -
6d7f60d0 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: use NULL instead of 0
(cherry picked from commit 89e0fe52f0f911fa8d032f18f5bffe6cd5fd8c78)
- - - - -
c7067872 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: check function strings
(cherry picked from commit 96f5580b84c7a73c0fb54b70fd3ea662b464ee2c)
- - - - -
17d63c0f by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix potential double free
(cherry picked from commit 43801e41a3a0f5619aad4717301f660eed1cf1e6)
- - - - -
58ef1bc8 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix selector leak on error
refs #29451
(cherry picked from commit 924b4285bfad985f9206fb45d6074f7a559fb218)
- - - - -
80aef08c by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: add YYNOMEM fallback
(cherry picked from commit 3c6279e1a516438719140a8762b6d88c41e4939c)
- - - - -
f02c0f1b by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix useless check before assignment
(cherry picked from commit a1267c8617950bd24f96766a4103b82b269782c0)
- - - - -
d237b282 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: fix grammar error handling and cleanups
(cherry picked from commit 842511f02e7fc42c60358f3cbb968d078f192563)
- - - - -
d8f1adf2 by François Cartegnie at 2026-01-09T17:26:34+01:00
codec: webvtt: update CSS parser grammar
Fixes unwanted reduction of IDENT as operator
ex: el3{color:red !important fail;}
due to operator grammar and declaration error propagation.
| /* empty */ { $$ = 0; }
and declaration error propagation
property ':' maybe_space error expr prio
Error handling then leaks the mis-reduced IDENT token.
(cherry picked from commit ace499bad067b3aed23dd1a02e3b6c61b929526b)
- - - - -
5 changed files:
- modules/codec/webvtt/CSSGrammar.y
- modules/codec/webvtt/CSSLexer.l
- modules/codec/webvtt/css_bridge.h
- modules/codec/webvtt/css_parser.c
- modules/codec/webvtt/css_parser.h
Changes:
=====================================
modules/codec/webvtt/CSSGrammar.y
=====================================
@@ -26,12 +26,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
*
*/
-%pure-parser
+%define api.pure full
+%define api.prefix {css}
-%parse-param { yyscan_t scanner }
+%param { yyscan_t scanner }
%parse-param { vlc_css_parser_t *css_parser }
-%lex-param { yyscan_t scanner }
-%lex-param { vlc_css_parser_t *css_parser }
+
%{
#ifdef HAVE_CONFIG_H
@@ -44,6 +44,10 @@
#define YY_TYPEDEF_YY_SCANNER_T
typedef void* yyscan_t;
#endif
+
+#if YYBISON < 30800
+# define YYNOMEM YYABORT
+#endif
%}
%union {
@@ -64,17 +68,17 @@ typedef void* yyscan_t;
%{
/* See bison pure calling */
-int yylex(union YYSTYPE *, yyscan_t, vlc_css_parser_t *);
+#define YY_DECL int yylex(union YYSTYPE *, yyscan_t)
+YY_DECL;
-static int yyerror(yyscan_t scanner, vlc_css_parser_t *p, const char *msg)
+static void yyerror(yyscan_t scanner, vlc_css_parser_t *p, const char *msg)
{
VLC_UNUSED(scanner);VLC_UNUSED(p);VLC_UNUSED(msg);
- return 1;
}
%}
-%expect 10
+%expect 7
%nonassoc LOWEST_PREC
@@ -189,9 +193,7 @@ maybe_sgml:
maybe_charset:
/* empty */
- | charset {
- vlc_css_rules_Delete($1);
- }
+ | charset
;
closing_brace:
@@ -202,13 +204,13 @@ closing_brace:
charset:
CHARSET_SYM maybe_space STRING maybe_space ';' {
free( $3 );
- $$ = 0;
+ $$ = NULL;
}
| CHARSET_SYM error invalid_block {
- $$ = 0;
+ $$ = NULL;
}
| CHARSET_SYM error ';' {
- $$ = 0;
+ $$ = NULL;
}
;
@@ -216,10 +218,10 @@ ignored_charset:
CHARSET_SYM maybe_space STRING maybe_space ';' {
// Ignore any @charset rule not at the beginning of the style sheet.
free( $3 );
- $$ = 0;
+ $$ = NULL;
}
| CHARSET_SYM maybe_space ';' {
- $$ = 0;
+ $$ = NULL;
}
;
@@ -279,19 +281,16 @@ unary_operator:
ruleset:
selector_list '{' maybe_space declaration_list closing_brace {
$$ = vlc_css_rule_New();
- if($$)
- {
- $$->p_selectors = $1;
- $$->p_declarations = $4;
- }
+ if( !$$ )
+ YYNOMEM;
+ $$->p_selectors = $1;
+ $$->p_declarations = $4;
}
;
selector_list:
selector %prec UNIMPORTANT_TOK {
- if ($1) {
- $$ = $1;
- }
+ $$ = $1;
}
| selector_list ',' maybe_space selector %prec UNIMPORTANT_TOK {
if ($1 && $4 )
@@ -328,22 +327,32 @@ selector:
}
| selector_with_trailing_whitespace simple_selector
{
- $$ = $1;
- if ($$ && $2)
+ if( $1 && $2 )
{
- vlc_css_selector_AddSpecifier( $$, $2 );
+ vlc_css_selector_AddSpecifier( $1, $2 );
$2->combinator = RELATION_DESCENDENT;
+ $$ = $1;
+ }
+ else
+ {
+ vlc_css_selectors_Delete( $1 );
+ vlc_css_selectors_Delete( $2 );
+ $$ = NULL;
}
- else $$ = $2;
}
| selector combinator simple_selector {
- $$ = $1;
- if ($$ && $3)
+ if( $1 && $3 )
{
- vlc_css_selector_AddSpecifier( $$, $3 );
+ vlc_css_selector_AddSpecifier( $1, $3 );
$3->combinator = $2;
+ $$ = $1;
+ }
+ else
+ {
+ vlc_css_selectors_Delete( $1 );
+ vlc_css_selectors_Delete( $3 );
+ $$ = NULL;
}
- else $$ = $3;
}
| selector error {
vlc_css_selectors_Delete( $1 );
@@ -353,19 +362,27 @@ selector:
simple_selector:
element_name {
+ if( !$1 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SELECTOR_SIMPLE, $1 );
+ if( !$$ )
+ YYNOMEM; // destructors called
free( $1 );
}
| element_name specifier_list {
- $$ = vlc_css_selector_New( SELECTOR_SIMPLE, $1 );
- if( $$ && $2 )
+ if( !$1 )
{
- vlc_css_selector_AddSpecifier( $$, $2 );
- }
- else
- {
- vlc_css_selectors_Delete( $2 );
+ $$ = NULL;
+ YYERROR;
}
+ $$ = vlc_css_selector_New( SELECTOR_SIMPLE, $1 );
+ if( !$$ )
+ YYNOMEM; // destructors called
+ if( $2 )
+ vlc_css_selector_AddSpecifier( $$, $2 );
free( $1 );
}
| specifier_list {
@@ -388,7 +405,8 @@ specifier_list:
$$ = $1;
while( $1->specifiers.p_first )
$1 = $1->specifiers.p_first;
- vlc_css_selector_AddSpecifier( $1, $2 );
+ if( $2 )
+ vlc_css_selector_AddSpecifier( $1, $2 );
}
else $$ = $2;
}
@@ -400,17 +418,28 @@ specifier_list:
specifier:
IDSEL {
+ if( !$1 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SPECIFIER_ID, $1 );
+ if( !$$ )
+ YYNOMEM; // $1 destructor called
free( $1 );
}
/* Case when #fffaaa like token is lexed as HEX instead of IDSEL */
| HASH {
- if ($1[0] >= '0' && $1[0] <= '9') {
+ if ( !$1 || ($1[0] >= '0' && $1[0] <= '9') )
+ {
$$ = NULL;
+ YYERROR; // $1 destructor called
} else {
$$ = vlc_css_selector_New( SPECIFIER_ID, $1 );
+ if( !$$ )
+ YYNOMEM; // $1 destructor called
+ free( $1 );
}
- free( $1 );
}
| class
| attrib
@@ -419,7 +448,14 @@ specifier:
class:
'.' IDENT {
+ if( !$2 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SPECIFIER_CLASS, $2 );
+ if( !$$ )
+ YYNOMEM; // $2 destructor called
free( $2 );
}
;
@@ -432,15 +468,29 @@ attr_name:
attrib:
'[' maybe_space attr_name ']' {
+ if( !$3 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SPECIFIER_ATTRIB, $3 );
free( $3 );
}
| '[' maybe_space attr_name match maybe_space ident_or_string maybe_space
']' {
+ if( !$6 || !$3 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SPECIFIER_ATTRIB, $3 );
- if( $$ && $$ )
+ if( !$$ )
+ YYNOMEM;
+ $$->match = $4;
+ $$->p_matchsel = vlc_css_selector_New( SPECIFIER_ID, $6 );
+ if ( !$$->p_matchsel )
{
- $$->match = $4;
- $$->p_matchsel = vlc_css_selector_New( SPECIFIER_ID, $6 );
+ vlc_css_selectors_Delete( $$ );
+ YYNOMEM;
}
free( $3 );
free( $6 );
@@ -475,41 +525,81 @@ ident_or_string:
pseudo:
':' IDENT {
+ if( !$2 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SELECTOR_PSEUDOCLASS, $2 );
+ if( !$$ )
+ YYNOMEM;
free( $2 );
}
| ':' ':' IDENT {
+ if( !$3 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = vlc_css_selector_New( SELECTOR_PSEUDOELEMENT, $3 );
+ if( !$$ )
+ YYNOMEM;
free( $3 );
}
// used by :nth-*
| ':' FUNCTION maybe_space maybe_unary_operator NUMBER maybe_space ')' {
+ if( !$2 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
+
if(*$2 != 0)
$2[strlen($2) - 1] = 0;
$$ = vlc_css_selector_New( SELECTOR_PSEUDOCLASS, $2 );
+ if( !$$ )
+ YYNOMEM;
$5.val *= $4;
+
free( $2 );
vlc_css_term_Clean( $5 );
}
// required for WEBVTT weirdos cue::(::past)
| ':' ':' FUNCTION maybe_space selector maybe_space ')' {
+ if( !$3 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
+
if(*$3 != 0)
$3[strlen($3) - 1] = 0;
$$ = vlc_css_selector_New( SELECTOR_PSEUDOELEMENT, $3 );
- free( $3 );
- if( $$ && $5 )
+ if( !$$ )
+ YYNOMEM;
+
+ if( $5 )
{
vlc_css_selector_AddSpecifier( $$, $5 );
$5->combinator = RELATION_SELF;
}
- else
- vlc_css_selectors_Delete( $5 );
+
+ free( $3 );
}
// used by :nth-*(odd/even) and :lang
| ':' FUNCTION maybe_space IDENT maybe_space ')' {
+ if( !$2 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
+
if(*$2 != 0)
$2[strlen($2) - 1] = 0;
$$ = vlc_css_selector_New( SELECTOR_PSEUDOCLASS, $2 );
+ if( !$$ )
+ YYNOMEM;
+
free( $2 );
free( $4 );
}
@@ -577,59 +667,44 @@ decl_list:
declaration:
property ':' maybe_space expr prio {
- if( $4 )
+ if( !$1 || !$4 )
{
- $$ = vlc_css_declaration_New( $1 );
- if( $$ )
- $$->expr = $4;
- else
- vlc_css_expression_Delete( $4 );
+ $$ = NULL;
+ YYERROR;
}
- else $$ = NULL;
+ $$ = vlc_css_declaration_New( $1 );
+ if( !$$ )
+ YYNOMEM;
+ $$->expr = $4;
free( $1 );
}
- |
- property error {
+ | property ':' maybe_space expr error {
+ /* e.g. color: red !important fail; or color: red; garbage */
free( $1 );
+ vlc_css_expression_Delete( $4 );
$$ = NULL;
}
- |
- property ':' maybe_space error expr prio {
+ | property ':' maybe_space error {
+ /* color: garbage */
free( $1 );
- vlc_css_expression_Delete( $5 );
- /* The default movable type template has letter-spacing: .none;
Handle this by looking for
- error tokens at the start of an expr, recover the expr and then treat
as an error, cleaning
- up and deleting the shifted expr. */
$$ = NULL;
}
- |
- property ':' maybe_space expr prio error {
+ | property error {
+ /* color garbage */
free( $1 );
- vlc_css_expression_Delete( $4 );
- /* When we encounter something like p {color: red !important fail;} we
should drop the declaration */
- $$ = NULL;
- }
- |
- IMPORTANT_SYM maybe_space {
- /* Handle this case: div { text-align: center; !important } Just
reduce away the stray !important. */
$$ = NULL;
}
- |
- property ':' maybe_space {
+ | property ':' maybe_space {
+ /* color: ; */
free( $1 );
- /* div { font-family: } Just reduce away this property with no value.
*/
$$ = NULL;
}
- |
- property ':' maybe_space error {
+ | property invalid_block {
free( $1 );
- /* if we come across rules with invalid values like this case: p {
weight: *; }, just discard the rule */
$$ = NULL;
}
- |
- property invalid_block {
- /* if we come across: div { color{;color:maroon} }, ignore everything
within curly brackets */
- free( $1 );
+ | IMPORTANT_SYM maybe_space {
+ /* stray !important */
$$ = NULL;
}
;
@@ -649,38 +724,38 @@ expr:
term {
$$ = vlc_css_expression_New( $1 );
if( !$$ )
- vlc_css_term_Clean( $1 );
+ YYNOMEM;
}
- | expr operator term {
+ | expr term {
+ if( !$1 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
$$ = $1;
- if( !$1 || !vlc_css_expression_AddTerm($1, $2, $3) )
- vlc_css_term_Clean( $3 );
+ if( !vlc_css_expression_AddTerm( $1, ' ', $2 ) )
+ YYNOMEM;
}
- | expr invalid_block_list {
- vlc_css_expression_Delete( $1 );
- $$ = NULL;
- }
- | expr invalid_block_list error {
- vlc_css_expression_Delete( $1 );
- $$ = NULL;
- }
- | expr error {
- vlc_css_expression_Delete( $1 );
- $$ = NULL;
+ | expr operator maybe_space term {
+ if( !$1 )
+ {
+ $$ = NULL;
+ YYERROR;
+ }
+ $$ = $1;
+ if( !vlc_css_expression_AddTerm( $1, '/', $4 ) )
+ YYNOMEM;
}
;
operator:
- '/' maybe_space {
- $$ = '/';
- }
- | ',' maybe_space {
- $$ = ',';
- }
- | /* empty */ {
- $$ = 0;
- }
- ;
+ '/' maybe_space {
+ $$ = '/';
+ }
+ | ',' maybe_space {
+ $$ = ',';
+ }
+ ;
term:
unary_term { $$ = $1; }
@@ -720,22 +795,22 @@ function:
FUNCTION maybe_space expr ')' maybe_space {
$$.type = TYPE_FUNCTION; $$.function = $3;
$$.psz = $1;
- if(*$$.psz != 0)
+ if($1 && *$$.psz != 0)
$$.psz[strlen($$.psz) - 1] = 0;
} |
FUNCTION maybe_space expr TOKEN_EOF {
$$.type = TYPE_FUNCTION; $$.function = $3; $$.psz = $1;
- if(*$$.psz != 0)
+ if($1 && *$$.psz != 0)
$$.psz[strlen($$.psz) - 1] = 0;
} |
FUNCTION maybe_space ')' maybe_space {
$$.type = TYPE_FUNCTION; $$.function = NULL; $$.psz = $1;
- if(*$$.psz != 0)
+ if($1 && *$$.psz != 0)
$$.psz[strlen($$.psz) - 1] = 0;
} |
FUNCTION maybe_space error {
$$.type = TYPE_FUNCTION; $$.function = NULL; $$.psz = $1;
- if(*$$.psz != 0)
+ if($1 && *$$.psz != 0)
$$.psz[strlen($$.psz) - 1] = 0;
}
;
=====================================
modules/codec/webvtt/CSSLexer.l
=====================================
@@ -25,6 +25,7 @@
%option noinput
%option never-interactive
%option nostdinit
+%option prefix="css" outfile="lex.yy.c"
%{
#ifdef HAVE_CONFIG_H
@@ -38,10 +39,10 @@
char *d;
%}
-h [0-9a-f]
-nonascii [\200-\377]
+h [0-9a-fA-F]
+nonascii (?-i:[\200-\377])
unicode \\{h}{1,6}[ \t\r\n\f]?
-escape {unicode}|\\[ -~\200-\377]
+escape (?-i:{unicode}|\\[ -~\200-\377])
nmstart [a-z]|{nonascii}|{escape}
nmchar [a-z0-9-]|{nonascii}|{escape}
string1 \"([\t !#$%&(-~]|\\{nl}|\'|{nonascii}|{escape})*\"
@@ -66,6 +67,9 @@ range
\?{1,6}|{h}(\?{0,5}|{h}(\?{0,4}|{h}(\?{0,3}|{h}(\?{0,2}|{h}(\??|{h})))))
"-->" {return CDC;}
"~=" {return INCLUDES;}
"|=" {return DASHMATCH;}
+"^=" {return BEGINSWITH;}
+"$=" {return ENDSWITH;}
+"*=" {return CONTAINS;}
{string} { yylval->string = vlc_css_unquotedunescaped(yytext);
return STRING;}
=====================================
modules/codec/webvtt/css_bridge.h
=====================================
@@ -18,10 +18,11 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#define yyconst const
+#define YYSTYPE CSSSTYPE
typedef void* yyscan_t;
typedef struct yy_buffer_state *YY_BUFFER_STATE;
-int yylex_init (yyscan_t* scanner);
-YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes, int, yyscan_t yyscanner );
-int yylex_destroy (yyscan_t yyscanner );
-void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner);
+int csslex_init (yyscan_t* scanner);
+YY_BUFFER_STATE css_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
+YY_BUFFER_STATE css_scan_bytes (yyconst char *bytes, int, yyscan_t yyscanner );
+int csslex_destroy (yyscan_t yyscanner );
+void css_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner);
=====================================
modules/codec/webvtt/css_parser.c
=====================================
@@ -267,14 +267,14 @@ void vlc_css_parser_Init( vlc_css_parser_t *p_parser )
bool vlc_css_parser_ParseBytes( vlc_css_parser_t *p_parser, const uint8_t
*p_data, size_t i_data )
{
yyscan_t yy;
- yylex_init(&yy);
+ csslex_init(&yy);
- YY_BUFFER_STATE buf = yy_scan_bytes( (const char*) p_data, i_data, yy );
+ YY_BUFFER_STATE buf = css_scan_bytes( (const char*) p_data, i_data, yy );
- bool b_ret = !yyparse( yy, p_parser );
+ bool b_ret = !cssparse( yy, p_parser );
- yy_delete_buffer( buf, yy );
- yylex_destroy( yy );
+ css_delete_buffer( buf, yy );
+ csslex_destroy( yy );
return b_ret;
}
@@ -282,14 +282,14 @@ bool vlc_css_parser_ParseBytes( vlc_css_parser_t
*p_parser, const uint8_t *p_dat
bool vlc_css_parser_ParseString( vlc_css_parser_t *p_parser, const char
*psz_css )
{
yyscan_t yy;
- yylex_init(&yy);
+ csslex_init(&yy);
- YY_BUFFER_STATE buf = yy_scan_string( psz_css, yy );
+ YY_BUFFER_STATE buf = css_scan_string( psz_css, yy );
- bool b_ret = !yyparse( yy, p_parser );
+ bool b_ret = !cssparse( yy, p_parser );
- yy_delete_buffer( buf, yy );
- yylex_destroy( yy );
+ css_delete_buffer( buf, yy );
+ csslex_destroy( yy );
return b_ret;
}
=====================================
modules/codec/webvtt/css_parser.h
=====================================
@@ -22,6 +22,7 @@
//#define YYDEBUG 1
//#define CSS_PARSER_DEBUG
+#define YYSTYPE CSSSTYPE
typedef struct vlc_css_parser_t vlc_css_parser_t;
typedef struct vlc_css_selector_t vlc_css_selector_t;
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/f8320532910244e7d68f4d35c50f626178861e3d...d8f1adf275424ef9f894f5197157847349fdfbf2
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/f8320532910244e7d68f4d35c50f626178861e3d...d8f1adf275424ef9f894f5197157847349fdfbf2
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits