msi: Only apply the last font style in the list of styles
James Hawkins
truiken at gmail.com
Tue Oct 3 21:15:08 CDT 2006
Hi,
This fixes bug 6196. http://bugs.winehq.org/show_bug.cgi?id=6196
Changelog:
* Only apply the last font style in the list of styles.
dlls/msi/dialog.c | 36 ++++++++++++++++++++----------------
1 files changed, 20 insertions(+), 16 deletions(-)
--
James Hawkins
-------------- next part --------------
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index 2ffc3db..55743ca 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -240,30 +240,34 @@ LPWSTR msi_dialog_get_name( msi_dialog *
* msi_dialog_get_style
*
* Extract the {\style} string from the front of the text to display and
- * update the pointer.
+ * update the pointer. Only the last style in a list is applied.
*/
static LPWSTR msi_dialog_get_style( LPCWSTR p, LPCWSTR *rest )
{
- LPWSTR ret = NULL;
- LPCWSTR q, i;
+ LPWSTR ret;
+ LPCWSTR q, i, first;
DWORD len;
+ q = NULL;
*rest = p;
if( !p )
- return ret;
- if( *p++ != '{' )
- return ret;
- q = strchrW( p, '}' );
- if( !q )
- return ret;
- if( *p == '\\' || *p == '&' )
- p++;
+ return NULL;
+
+ while ((first = strchrW( p, '{' )) && (q = strchrW( first + 1, '}' )))
+ {
+ p = first + 1;
+ if( *p == '\\' || *p == '&' )
+ p++;
+
+ /* little bit of sanity checking to stop us getting confused with RTF */
+ for( i=p; i<q; i++ )
+ if( *i == '}' || *i == '\\' )
+ return NULL;
+ }
+
+ if (!p || !q)
+ return NULL;
- /* little bit of sanity checking to stop us getting confused with RTF */
- for( i=p; i<q; i++ )
- if( *i == '}' || *i == '\\' )
- return ret;
-
*rest = ++q;
len = q - p;
--
1.4.2.1
More information about the wine-patches
mailing list