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.