Changeset 805


Ignore:
Timestamp:
Aug 26, 2007, 5:30:13 AM (18 years ago)
Author:
Steven Levine
Message:

IconProc: do not use freed memory - random bad things happen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/info.c

    r793 r805  
    2020  19 Apr 07 SHL Sync with AcceptOneDrop GetOneDrop mods
    2121  20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat
     22  25 Aug 07 SHL Drop list from FILESTUF - data not static
     23  25 Aug 07 SHL IconProc: do not use freed memory - random bad things happen
    2224
    2325***********************************************************************/
     
    332334  USHORT size;
    333335  CHAR szFileName[CCHMAXPATH];
    334   CHAR **list;
    335336  BOOL madechanges;
    336337} FILESTUF;
     
    456457      return WinDefWindowProc(hwnd, msg, mp1, mp2);
    457458    else {
     459      PFNWP oldproc = pis->oldproc;
    458460      if (pis->lasthwndMenu)
    459         WinDestroyWindow(pis->lasthwndMenu);
     461        WinDestroyWindow(pis->lasthwndMenu);
    460462      free(pis);
     463      return oldproc(hwnd, msg, mp1, mp2);
    461464    }
    462465    break;
     
    470473  FILESTUF *pfs;
    471474  ICONSTUF *pis;
     475  CHAR **ppsz;
    472476
    473477  switch (msg) {
     
    482486      break;
    483487    }
    484     pfs->list = (CHAR **) mp2;
    485488    pfs->size = sizeof(FILESTUF);
    486489    WinSetWindowPtr(hwnd, QWL_USER, pfs);
     
    492495      CHAR s[CCHMAXPATH];
    493496
    494       for (x = 0; pfs->list[x]; x++) {
    495         if (DosQueryPathInfo(pfs->list[x], FIL_QUERYFULLNAME, s, sizeof(s)))
    496           strcpy(s, pfs->list[x]);
     497      ppsz = (CHAR **)mp2;
     498      for (x = 0; ppsz[x]; x++) {
     499        if (DosQueryPathInfo(ppsz[x], FIL_QUERYFULLNAME, s, sizeof(s)))
     500          strcpy(s, ppsz[x]);
    497501        WinSendDlgItemMsg(hwnd,
    498502                          FLE_NAME,
     
    551555        }
    552556        break;
    553       }
     557      } // switch
    554558      break;
    555559    case FLE_NAME:
     
    774778          WinEnableWindow(WinWindowFromID(hwnd, FLE_ISARCHIVE), TRUE);
    775779          WinEnableWindow(WinWindowFromID(hwnd, FLE_BINARY), TRUE);
    776           fp = _fsopen(pfs->szFileName, "rb", SH_DENYNO);
     780          fp = _fsopen(pfs->szFileName, "rb", SH_DENYNO);
    777781          if (fp) {
    778782            char buff[512];
Note: See TracChangeset for help on using the changeset viewer.