From d70db020a6d961b8266fbd780e42409064e4e6e0 Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Mon, 5 Jun 2006 01:41:04 +0100 Subject: [PATCH] msi: An empty string is equivalent to nil, so handle this in the optimised WHERE_execute path. --- dlls/msi/where.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dlls/msi/where.c b/dlls/msi/where.c index 6fa70a3ad29..a02b19b7aec 100644 --- a/dlls/msi/where.c +++ b/dlls/msi/where.c @@ -265,11 +265,17 @@ static UINT WHERE_execute( struct tagMSIVIEW *view, MSIRECORD *record ) if ((col_cond->type == EXPR_COL_NUMBER_STRING) && (val_cond->type == EXPR_SVAL)) { col = col_cond->u.col_number; - r = msi_string2idW(wv->db->strings, val_cond->u.sval, &value); - if (r != ERROR_SUCCESS) + /* special case for "" - translate it into nil */ + if (!val_cond->u.sval[0]) + value = 0; + else { - TRACE("no id for %s, assuming it doesn't exist in the table\n", debugstr_w(wv->cond->u.expr.right->u.sval)); - return ERROR_SUCCESS; + r = msi_string2idW(wv->db->strings, val_cond->u.sval, &value); + if (r != ERROR_SUCCESS) + { + TRACE("no id for %s, assuming it doesn't exist in the table\n", debugstr_w(wv->cond->u.expr.right->u.sval)); + return ERROR_SUCCESS; + } } do