diff --git a/controls/scroll.c b/controls/scroll.c
index c162b68..f5ef07d 100644
--- a/controls/scroll.c
+++ b/controls/scroll.c
@@ -1277,8 +1277,6 @@
     SCROLLBAR_INFO *infoPtr;
     UINT new_flags;
 
-    dbg_decl_str(scroll, 256);
-
    *action = 0;
 
     if (!(infoPtr = SCROLL_GetScrollInfo(hwnd, nBar))) return 0;
@@ -1286,11 +1284,19 @@
     if ((info->cbSize != sizeof(*info)) &&
         (info->cbSize != sizeof(*info)-sizeof(info->nTrackPos))) return 0;
 
+    if (TRACE_ON(scroll))
+    {
+        DPRINTF( "hwnd=%04x bar=%d", hwnd, nBar);
+        if (info->fMask & SIF_PAGE) DPRINTF( " page=%d", info->nPage );
+        if (info->fMask & SIF_POS) DPRINTF( " pos=%d", info->nPos );
+        if (info->fMask & SIF_RANGE) DPRINTF( " min=%d max=%d", info->nMin, info->nMax );
+        DPRINTF("\n");
+    }
+
     /* Set the page size */
 
     if (info->fMask & SIF_PAGE)
     {
-        dsprintf(scroll, " page=%d", info->nPage );
 	if( infoPtr->Page != info->nPage )
 	{
             infoPtr->Page = info->nPage;
@@ -1302,7 +1308,6 @@
 
     if (info->fMask & SIF_POS)
     {
-        dsprintf(scroll, " pos=%d", info->nPos );
 	if( infoPtr->CurVal != info->nPos )
 	{
 	    infoPtr->CurVal = info->nPos;
@@ -1314,8 +1319,6 @@
 
     if (info->fMask & SIF_RANGE)
     {
-        dsprintf(scroll, " min=%d max=%d", info->nMin, info->nMax );
-
         /* Invalid range -> range is set to (0,0) */
         if ((info->nMin > info->nMax) ||
             ((UINT)(info->nMax - info->nMin) >= 0x80000000))
@@ -1335,9 +1338,6 @@
         }
     }
 
-    TRACE("hwnd=%04x bar=%d %s\n", 
-		    hwnd, nBar, dbg_str(scroll));
-
     /* Make sure the page size is valid */
 
     if (infoPtr->Page < 0) infoPtr->Page = 0;
