mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-28 05:35:52 +03:00
AK: Properly parse unimplemented format length specifiers
This keeps us from stopping early and not rendering the argument at all.
This commit is contained in:
parent
b4eb21db4d
commit
dd71754d10
Notes:
sideshowbarker
2024-07-17 17:32:41 +09:00
Author: https://github.com/timschumi Commit: https://github.com/SerenityOS/serenity/commit/dd71754d10 Pull-request: https://github.com/SerenityOS/serenity/pull/13006
@ -318,8 +318,12 @@ struct ModifierState {
|
||||
unsigned field_width { 0 };
|
||||
bool has_precision { false };
|
||||
unsigned precision { 6 };
|
||||
unsigned short_qualifiers { 0 }; // TODO: Unimplemented.
|
||||
unsigned long_qualifiers { 0 };
|
||||
bool size_qualifier { false };
|
||||
bool intmax_qualifier { false }; // TODO: Unimplemented.
|
||||
bool ptrdiff_qualifier { false }; // TODO: Unimplemented.
|
||||
bool long_double_qualifier { false }; // TODO: Unimplemented.
|
||||
bool size_qualifier { false }; // TODO: Unimplemented.
|
||||
bool alternate_form { 0 };
|
||||
bool always_sign { false };
|
||||
};
|
||||
@ -499,14 +503,28 @@ ALWAYS_INLINE int printf_internal(PutChFunc putch, IdentityType<CharType>* buffe
|
||||
if (*(p + 1))
|
||||
goto one_more;
|
||||
}
|
||||
if (*p == 'h') {
|
||||
++state.short_qualifiers;
|
||||
if (*(p + 1))
|
||||
goto one_more;
|
||||
}
|
||||
if (*p == 'l') {
|
||||
++state.long_qualifiers;
|
||||
if (*(p + 1))
|
||||
goto one_more;
|
||||
}
|
||||
if (*p == 'j') {
|
||||
state.intmax_qualifier = true;
|
||||
if (*(p + 1))
|
||||
goto one_more;
|
||||
}
|
||||
if (*p == 't') {
|
||||
state.ptrdiff_qualifier = true;
|
||||
if (*(p + 1))
|
||||
goto one_more;
|
||||
}
|
||||
if (*p == 'L') {
|
||||
// TODO: Implement this properly.
|
||||
// For now just swallow, so the contents are actually rendered.
|
||||
state.long_double_qualifier = true;
|
||||
if (*(p + 1))
|
||||
goto one_more;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user