Hello Nikolay,
On 08/27/2013 12:16 PM, Nikolay Sivov wrote:
+static OLEMISC get_olemisc_value(const WCHAR *str,
int len)
+{
+ int min, max;
+
+ min = 0;
+ max = sizeof(olemisc_values)/sizeof(struct olemisc_entry) - 1;
+
+ while (min <= max)
+ {
+ int n, c;
+
+ n = (min+max)/2;
+
+ c = strncmpW(olemisc_values[n].name, str, len);
why don't you just
compare the length first? If the length matches you
can do a simple strcmpW between the strings to verify the match.
Something like the below code:
if (olemisc_values[n].len == len)
{
if (!strcmpW(olemisc_values[n].name, str)
return olemisc_values[n].value;
else
...
}
else if (olemisc_values[n].len > len)
max = n-1;
else
min = n+1;
+ if (!c)
+ {
+ if (olemisc_values[n].len < len)
+ c = -1;
+ else if (olemisc_values[n].len > len)
+ c = 1;
+ }
+
+ if (!c)
+ return olemisc_values[n].value;
+
+ if (c > 0)
+ max = n-1;
+ else
+ min = n+1;
+ }
+
+ WARN("unknown flag %s\n", debugstr_wn(str, len));
+ return 0;
+}
bye
michael