On 04/25/2015 08:41 PM, Thomas Faber wrote:
- /* class name with buffer one char too small */
- memset(classbuffer, 0x55, sizeof(classbuffer));
- classlen = sizeof(subkey_class) - 1;
- ret = RegQueryInfoKeyA(subkey, classbuffer, &classlen, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- ok(ret == ERROR_MORE_DATA, "ret = %d\n", ret);
- todo_wine ok(classlen == sizeof(subkey_class) - 2, "classlen = %u\n", classlen);
- todo_wine ok(classbuffer[0] == 's', "classbuffer[0] = 0x%x\n", classbuffer[0]);
- todo_wine ok(classbuffer[1] == 'u', "classbuffer[1] = 0x%x\n", classbuffer[1]);
- todo_wine ok(classbuffer[10] == 's', "classbuffer[10] = 0x%x\n", classbuffer[10]);
- todo_wine ok(classbuffer[11] == 0, "classbuffer[11] = 0x%x\n", classbuffer[11]);
- ok(classbuffer[12] == 0x55, "classbuffer[12] = 0x%x\n", classbuffer[12]);
I think it would be more readable if you tested it against a string. Also hardcoded offsets could be avoided in this case.
- memset(classbufferW, 0x55, sizeof(classbufferW));
- classlen = sizeof(subkey_class) - 1;
- ret = RegQueryInfoKeyW(subkey, classbufferW, &classlen, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- todo_wine ok(ret == ERROR_INSUFFICIENT_BUFFER, "ret = %d\n", ret);
- ok(classlen == sizeof(subkey_class) - 2 /* win8 */ ||
classlen == strlen(subkey_class), "classlen = %u\n", classlen);
- ok(classbufferW[0] == 0x5555, "classbufferW[0] = 0x%x\n", classbufferW[0]);
- ok(classbufferW[1] == 0x5555, "classbufferW[1] = 0x%x\n", classbufferW[1]);
- ok(classbufferW[10] == 0x5555, "classbufferW[10] = 0x%x\n", classbufferW[10]);
- ok(classbufferW[11] == 0x5555, "classbufferW[11] = 0x%x\n", classbufferW[11]);
- ok(classbufferW[12] == 0x5555, "classbufferW[12] = 0x%x\n", classbufferW[12]);
If first element is not changed, it's really unlikely that anything else did.
- ok(classbuffer[12] == 0, "classbuffer[12] = 0x%x\n", classbuffer[12]);
- ok(classbuffer[13] == 0x55, "classbuffer[13] = 0x%x\n", classbuffer[13]);
...
- ok(!lstrcmpW(classbufferW, subkey_classW), "classbufferW = %s\n", wine_dbgstr_w(classbufferW));
- ok(classbufferW[12] == 0, "classbufferW[12] = 0x%x\n", classbufferW[12]);
- ok(classbufferW[13] == 0x5555, "classbufferW[13] = 0x%x\n", classbufferW[13]);
Could you replace offsets with calculated string length instead so it still works for different strings.
On 2015-04-25 21:15, Nikolay Sivov wrote:
On 04/25/2015 08:41 PM, Thomas Faber wrote:
- todo_wine ok(classbuffer[0] == 's', "classbuffer[0] = 0x%x\n", classbuffer[0]);
- todo_wine ok(classbuffer[1] == 'u', "classbuffer[1] = 0x%x\n", classbuffer[1]);
- todo_wine ok(classbuffer[10] == 's', "classbuffer[10] = 0x%x\n", classbuffer[10]);
- todo_wine ok(classbuffer[11] == 0, "classbuffer[11] = 0x%x\n", classbuffer[11]);
- ok(classbuffer[12] == 0x55, "classbuffer[12] = 0x%x\n", classbuffer[12]);
I think it would be more readable if you tested it against a string. Also hardcoded offsets could be avoided in this case.
Yeah it seemed simpler to do it by hand initially but you're right. I'll send an updated version.
- ok(classbufferW[0] == 0x5555, "classbufferW[0] = 0x%x\n", classbufferW[0]);
- ok(classbufferW[1] == 0x5555, "classbufferW[1] = 0x%x\n", classbufferW[1]);
- ok(classbufferW[10] == 0x5555, "classbufferW[10] = 0x%x\n", classbufferW[10]);
- ok(classbufferW[11] == 0x5555, "classbufferW[11] = 0x%x\n", classbufferW[11]);
- ok(classbufferW[12] == 0x5555, "classbufferW[12] = 0x%x\n", classbufferW[12]);
If first element is not changed, it's really unlikely that anything else did.
This was for consistency with the ansi version. But the other change will take care of it in any case.
Thanks! -Thomas