misc. code fixes
Andreas Mohr
andi at rhlx01.fht-esslingen.de
Sun Nov 18 09:41:49 CST 2001
Hi all,
- make listbox.c use reasonable bounds checking
- dlls/wineps/wps_De.rc: fix terribly wrong spelling, make accel key
conform to NT 4.0 key.
- server/file.c: move file_set_error() to top to allow for easier finding
- win32/time.c: fix copy&paste "bug"
--
Andreas Mohr Stauferstr. 6, D-71272 Renningen, Germany
-------------- next part --------------
Determining best CVS host...
Using CVSROOT :pserver:cvs at rhlx01.fht-esslingen.de:/home/wine
Index: controls/listbox.c
===================================================================
RCS file: /home/wine/wine/controls/listbox.c,v
retrieving revision 1.79
diff -u -r1.79 listbox.c
--- controls/listbox.c 7 Sep 2001 18:38:57 -0000 1.79
+++ controls/listbox.c 18 Nov 2001 13:39:00 -0000
@@ -434,7 +434,7 @@
static LRESULT LISTBOX_GetItemRect( LB_DESCR *descr, INT index, RECT *rect )
{
/* Index <= 0 is legal even on empty listboxes */
- if (index && (index >= descr->nb_items)) return -1;
+ if (index && (index > descr->nb_items-1)) return -1;
SetRect( rect, 0, 0, descr->width, descr->height );
if (descr->style & LBS_MULTICOLUMN)
{
@@ -449,7 +449,7 @@
{
INT i;
rect->right += descr->horz_pos;
- if ((index >= 0) && (index < descr->nb_items))
+ if ((index >= 0) && (index <= descr->nb_items-1))
{
if (index < descr->top_item)
{
@@ -492,7 +492,7 @@
INT pos = 0;
if (y >= 0)
{
- while (index < descr->nb_items)
+ while (index <= descr->nb_items-1)
{
if ((pos += descr->items[index].height) > y) break;
index++;
@@ -519,7 +519,7 @@
index += (y / descr->item_height);
}
if (index < 0) return 0;
- if (index >= descr->nb_items) return -1;
+ if (index > descr->nb_items-1) return -1;
return index;
}
@@ -533,7 +533,7 @@
const RECT *rect, INT index, UINT action, BOOL ignoreFocus )
{
LB_ITEMDATA *item = NULL;
- if (index < descr->nb_items) item = &descr->items[index];
+ if (index <= descr->nb_items-1) item = &descr->items[index];
if (IS_OWNERDRAW(descr))
{
@@ -750,7 +750,7 @@
*/
static LRESULT LISTBOX_GetText( LB_DESCR *descr, INT index, LPARAM lParam, BOOL unicode )
{
- if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
+ if ((index < 0) || (index > descr->nb_items-1)) return LB_ERR;
if (HAS_STRINGS(descr))
{
if (!lParam)
@@ -875,7 +875,7 @@
INT i;
LB_ITEMDATA *item;
- if (start >= descr->nb_items) start = -1;
+ if (start > descr->nb_items-1) start = -1;
item = descr->items + start + 1;
if (HAS_STRINGS(descr))
{
@@ -1125,7 +1125,7 @@
{
if (descr->style & LBS_OWNERDRAWVARIABLE)
{
- if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
+ if ((index < 0) || (index > descr->nb_items-1)) return LB_ERR;
return descr->items[index].height;
}
else return descr->item_height;
@@ -1142,7 +1142,7 @@
if (descr->style & LBS_OWNERDRAWVARIABLE)
{
- if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
+ if ((index < 0) || (index > descr->nb_items-1)) return LB_ERR;
TRACE("[%04x]: item %d height = %d\n", hwnd, index, height );
descr->items[index].height = height;
LISTBOX_UpdateScroll( hwnd, descr );
@@ -1292,7 +1292,7 @@
INT oldfocus = descr->focus_item;
if (descr->style & LBS_NOSEL) return LB_ERR;
- if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
+ if ((index < 0) || (index > descr->nb_items-1)) return LB_ERR;
if (index == oldfocus) return LB_OKAY;
descr->focus_item = index;
if ((oldfocus != -1) && descr->caret_on && (descr->in_focus))
@@ -1322,8 +1322,8 @@
if ((last == -1) && (descr->nb_items == 0)) return LB_OKAY;
if (!(descr->style & LBS_MULTIPLESEL)) return LB_ERR;
if (last == -1) last = descr->nb_items - 1;
- if ((first < 0) || (first >= descr->nb_items)) return LB_ERR;
- if ((last < 0) || (last >= descr->nb_items)) return LB_ERR;
+ if ((first < 0) || (first > descr->nb_items-1)) return LB_ERR;
+ if ((last < 0) || (last > descr->nb_items-1)) return LB_ERR;
/* selected_item reflects last selected/unselected item on multiple sel */
descr->selected_item = last;
@@ -1358,7 +1358,7 @@
TRACE( "index=%d notify=%s\n", index, send_notify ? "YES" : "NO" );
if (descr->style & LBS_NOSEL) return LB_ERR;
- if ((index < -1) || (index >= descr->nb_items)) return LB_ERR;
+ if ((index < -1) || (index > descr->nb_items-1)) return LB_ERR;
if (descr->style & LBS_MULTIPLESEL)
{
if (index == -1) /* Select all items */
@@ -1395,7 +1395,7 @@
{
INT oldfocus = descr->focus_item;
- if ((index < 0) || (index >= descr->nb_items))
+ if ((index < 0) || (index > descr->nb_items-1))
return;
/* Important, repaint needs to be done in this order if
@@ -1598,7 +1598,7 @@
INT max_items;
if ((index == -1) && (descr->nb_items > 0)) index = descr->nb_items - 1;
- else if ((index < 0) || (index >= descr->nb_items)) return LB_ERR;
+ else if ((index < 0) || (index > descr->nb_items-1)) return LB_ERR;
/* We need to invalidate the original rect instead of the updated one. */
LISTBOX_InvalidateItems( hwnd, descr, index );
@@ -1645,7 +1645,7 @@
}
}
- if (descr->focus_item >= descr->nb_items)
+ if (descr->focus_item > descr->nb_items-1)
{
descr->focus_item = descr->nb_items - 1;
if (descr->focus_item < 0) descr->focus_item = 0;
@@ -2132,7 +2132,7 @@
case LB_TIMER_DOWN:
index = descr->top_item + LISTBOX_GetCurrentPageSize( descr );
if (index == descr->focus_item) index++;
- if (index >= descr->nb_items) index = descr->nb_items - 1;
+ if (index > descr->nb_items-1) index = descr->nb_items - 1;
break;
case LB_TIMER_RIGHT:
if (index + descr->page_size < descr->nb_items)
@@ -2256,7 +2256,7 @@
/* fall through */
case VK_DOWN:
caret = descr->focus_item + 1;
- if (caret >= descr->nb_items) caret = descr->nb_items - 1;
+ if (caret > descr->nb_items-1) caret = descr->nb_items - 1;
break;
case VK_PRIOR:
@@ -2277,7 +2277,7 @@
caret = descr->focus_item + (page * descr->page_size) - 1;
}
else caret = descr->focus_item + LISTBOX_GetCurrentPageSize(descr) - 1;
- if (caret >= descr->nb_items) caret = descr->nb_items - 1;
+ if (caret > descr->nb_items-1) caret = descr->nb_items - 1;
break;
case VK_HOME:
caret = 0;
@@ -2566,13 +2566,13 @@
case LB_GETITEMDATA16:
case LB_GETITEMDATA:
- if (((INT)wParam < 0) || ((INT)wParam >= descr->nb_items))
+ if (((INT)wParam < 0) || ((INT)wParam > descr->nb_items-1))
return LB_ERR;
return descr->items[wParam].data;
case LB_SETITEMDATA16:
case LB_SETITEMDATA:
- if (((INT)wParam < 0) || ((INT)wParam >= descr->nb_items))
+ if (((INT)wParam < 0) || ((INT)wParam > descr->nb_items-1))
return LB_ERR;
descr->items[wParam].data = (DWORD)lParam;
return LB_OKAY;
@@ -2590,7 +2590,7 @@
case LB_GETTEXTLEN16:
/* fall through */
case LB_GETTEXTLEN:
- if ((INT)wParam >= descr->nb_items || (INT)wParam < 0)
+ if (((INT)wParam < 0) || ((INT)wParam > descr->nb_items-1))
return LB_ERR;
return (HAS_STRINGS(descr) ? strlenW(descr->items[wParam].str)
: sizeof(DWORD));
@@ -2753,7 +2753,7 @@
wParam = (INT)(INT16)wParam;
/* fall through */
case LB_GETSEL:
- if (((INT)wParam < 0) || ((INT)wParam >= descr->nb_items))
+ if (((INT)wParam < 0) || ((INT)wParam > descr->nb_items-1))
return LB_ERR;
return descr->items[wParam].selected;
@@ -2813,7 +2813,7 @@
wParam = (INT)(INT16)wParam;
/* fall through */
case LB_SETANCHORINDEX:
- if (((INT)wParam < -1) || ((INT)wParam >= descr->nb_items))
+ if (((INT)wParam < -1) || ((INT)wParam > descr->nb_items-1))
return LB_ERR;
descr->anchor_item = (INT)wParam;
return LB_OKAY;
Index: dlls/wineps/wps_De.rc
===================================================================
RCS file: /home/wine/wine/dlls/wineps/wps_De.rc,v
retrieving revision 1.1
diff -u -r1.1 wps_De.rc
--- dlls/wineps/wps_De.rc 7 May 2001 18:13:13 -0000 1.1
+++ dlls/wineps/wps_De.rc 18 Nov 2001 13:39:00 -0000
@@ -5,7 +5,7 @@
CAPTION "Papier"
FONT 8, "Helv"
{
- LTEXT "Papier &Gr??e:", -1, 10, 6, 100, 8
+ LTEXT "&Papiergr??e:", -1, 10, 6, 100, 8
LISTBOX IDD_PAPERS, 10, 15, 200, 45, LBS_STANDARD | LBS_HASSTRINGS |
WS_TABSTOP
GROUPBOX "Ausrichtung", -1, 10, 80, 200, 50
Index: server/file.c
===================================================================
RCS file: /home/wine/wine/server/file.c,v
retrieving revision 1.48
diff -u -r1.48 file.c
--- server/file.c 24 Oct 2001 00:23:26 -0000 1.48
+++ server/file.c 18 Nov 2001 13:39:00 -0000
@@ -69,6 +69,32 @@
};
+/* set the last error depending on errno */
+void file_set_error(void)
+{
+ switch (errno)
+ {
+ case EAGAIN: set_error( STATUS_SHARING_VIOLATION ); break;
+ case EBADF: set_error( STATUS_INVALID_HANDLE ); break;
+ case ENOSPC: set_error( STATUS_DISK_FULL ); break;
+ case EACCES:
+ case ESRCH:
+ case EPERM: set_error( STATUS_ACCESS_DENIED ); break;
+ case EROFS: set_error( STATUS_MEDIA_WRITE_PROTECTED ); break;
+ case EBUSY: set_error( STATUS_FILE_LOCK_CONFLICT ); break;
+ case ENOENT: set_error( STATUS_NO_SUCH_FILE ); break;
+ case EISDIR: set_error( 0xc0010000 | ERROR_CANNOT_MAKE /* FIXME */ ); break;
+ case ENFILE:
+ case EMFILE: set_error( STATUS_NO_MORE_FILES ); break;
+ case EEXIST: set_error( STATUS_OBJECT_NAME_COLLISION ); break;
+ case EINVAL: set_error( STATUS_INVALID_PARAMETER ); break;
+ case ESPIPE: set_error( 0xc0010000 | ERROR_SEEK /* FIXME */ ); break;
+ case ENOTEMPTY: set_error( STATUS_DIRECTORY_NOT_EMPTY ); break;
+ case EIO: set_error( STATUS_ACCESS_VIOLATION ); break;
+ default: perror("file_set_error"); set_error( ERROR_UNKNOWN /* FIXME */ ); break;
+ }
+}
+
static int get_name_hash( const char *name )
{
int hash = 0;
@@ -324,32 +350,6 @@
*pptr = (*pptr)->next;
if (file->flags & FILE_FLAG_DELETE_ON_CLOSE) unlink( file->name );
free( file->name );
- }
-}
-
-/* set the last error depending on errno */
-void file_set_error(void)
-{
- switch (errno)
- {
- case EAGAIN: set_error( STATUS_SHARING_VIOLATION ); break;
- case EBADF: set_error( STATUS_INVALID_HANDLE ); break;
- case ENOSPC: set_error( STATUS_DISK_FULL ); break;
- case EACCES:
- case ESRCH:
- case EPERM: set_error( STATUS_ACCESS_DENIED ); break;
- case EROFS: set_error( STATUS_MEDIA_WRITE_PROTECTED ); break;
- case EBUSY: set_error( STATUS_FILE_LOCK_CONFLICT ); break;
- case ENOENT: set_error( STATUS_NO_SUCH_FILE ); break;
- case EISDIR: set_error( 0xc0010000 | ERROR_CANNOT_MAKE /* FIXME */ ); break;
- case ENFILE:
- case EMFILE: set_error( STATUS_NO_MORE_FILES ); break;
- case EEXIST: set_error( STATUS_OBJECT_NAME_COLLISION ); break;
- case EINVAL: set_error( STATUS_INVALID_PARAMETER ); break;
- case ESPIPE: set_error( 0xc0010000 | ERROR_SEEK /* FIXME */ ); break;
- case ENOTEMPTY: set_error( STATUS_DIRECTORY_NOT_EMPTY ); break;
- case EIO: set_error( STATUS_ACCESS_VIOLATION ); break;
- default: perror("file_set_error"); set_error( ERROR_UNKNOWN /* FIXME */ ); break;
}
}
Index: win32/time.c
===================================================================
RCS file: /home/wine/wine/win32/time.c,v
retrieving revision 1.18
diff -u -r1.18 time.c
--- win32/time.c 14 Feb 2001 23:11:20 -0000 1.18
+++ win32/time.c 18 Nov 2001 13:39:00 -0000
@@ -42,20 +42,20 @@
*/
VOID WINAPI GetSystemTime(LPSYSTEMTIME systime)
{
- time_t local_time;
- struct tm *local_tm;
+ time_t system_time;
+ struct tm *system_tm;
struct timeval tv;
gettimeofday(&tv, NULL);
- local_time = tv.tv_sec;
- local_tm = gmtime(&local_time);
+ system_time = tv.tv_sec;
+ system_tm = gmtime(&system_time);
- systime->wYear = local_tm->tm_year + 1900;
- systime->wMonth = local_tm->tm_mon + 1;
- systime->wDayOfWeek = local_tm->tm_wday;
- systime->wDay = local_tm->tm_mday;
- systime->wHour = local_tm->tm_hour;
- systime->wMinute = local_tm->tm_min;
- systime->wSecond = local_tm->tm_sec;
+ systime->wYear = system_tm->tm_year + 1900;
+ systime->wMonth = system_tm->tm_mon + 1;
+ systime->wDayOfWeek = system_tm->tm_wday;
+ systime->wDay = system_tm->tm_mday;
+ systime->wHour = system_tm->tm_hour;
+ systime->wMinute = system_tm->tm_min;
+ systime->wSecond = system_tm->tm_sec;
systime->wMilliseconds = (tv.tv_usec / 1000) % 1000;
}
More information about the wine-patches
mailing list