diff -u -N -r source-old/base/applications/regedit/listview.c source/base/applications/regedit/listview.c --- source-old/base/applications/regedit/listview.c Sun Apr 18 12:55:30 2010 +++ source/base/applications/regedit/listview.c Tue May 4 22:28:31 2010 @@ -353,8 +353,23 @@ if (g_columnToSort == 1 && l->dwValType != r->dwValType) return g_invertSort ? (int)r->dwValType - (int)l->dwValType : (int)l->dwValType - (int)r->dwValType; - if (g_columnToSort == 2) { - /* FIXME: Sort on value */ + if (g_columnToSort == 2) + { + int i; + if (r->val_len < l->val_len) + i = memcmp(r->val, l->val, r->val_len); + else + i = memcmp(r->val, l->val, l->val_len); + if (i == 0) + { + if (r->val_len == l->val_len) + i = 0; + else if (r->val_len < l->val_len) + i = -1; + else + i = 1; + } + return g_invertSort ? -i : i; } return g_invertSort ? _tcscmp(r->name, l->name) : _tcscmp(l->name, r->name); }