Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
dlls/wbemprox/tests/query.c | 8 +++++++-
dlls/wbemprox/wql.y | 24 ++++++++++++++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c
index 083a717185..79b09c0966 100644
--- a/dlls/wbemprox/tests/query.c
+++ b/dlls/wbemprox/tests/query.c
@@ -106,8 +106,14 @@ static void test_select( IWbemServices *services )
{'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',
'W','i','n','3','2','_','V','i','d','e','o','C','o','n','t','r','o','l','l','e','r',' ','w','h','e','r','e',' ',
'a','v','a','i','l','a','b','i','l','i','t','y',' ','=',' ','\'','3','\'',0};
+ static const WCHAR query12[] =
+ {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','W','i','n','3','2','_','B','I','O','S',
+ ' ','W','H','E','R','E',' ','N','A','M','E',' ','<','>',' ','N','U','L','L', 0};
+ static const WCHAR query13[] =
+ {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','W','i','n','3','2','_','B','I','O','S',
+ ' ','W','H','E','R','E',' ','N','U','L','L',' ','=',' ','N','A','M','E', 0};
static const WCHAR *test[] = { query1, query2, query3, query4, query5, query6, query7, query8, query9, query10,
- query11 };
+ query11, query12, query13 };
HRESULT hr;
IEnumWbemClassObject *result;
BSTR wql = SysAllocString( wqlW );
diff --git a/dlls/wbemprox/wql.y b/dlls/wbemprox/wql.y
index 98b0378677..88da2b9b0f 100644
--- a/dlls/wbemprox/wql.y
+++ b/dlls/wbemprox/wql.y
@@ -414,6 +414,30 @@ expr:
if (!$$)
YYABORT;
}
+ | prop_val TK_EQ TK_NULL
+ {
+ $$ = expr_unary( ctx, $1, OP_ISNULL );
+ if (!$$)
+ YYABORT;
+ }
+ | TK_NULL TK_EQ prop_val
+ {
+ $$ = expr_unary( ctx, $3, OP_ISNULL );
+ if (!$$)
+ YYABORT;
+ }
+ | prop_val TK_NE TK_NULL
+ {
+ $$ = expr_unary( ctx, $1, OP_NOTNULL );
+ if (!$$)
+ YYABORT;
+ }
+ | TK_NULL TK_NE prop_val
+ {
+ $$ = expr_unary( ctx, $3, OP_NOTNULL );
+ if (!$$)
+ YYABORT;
+ }
;
string_val:
--
2.11.0