Ignore:
Timestamp:
Nov 25, 2000, 5:56:57 PM (25 years ago)
Author:
sandervl
Message:

Workaround for OS/2 shared memory name limitation (no colons)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/oslibdos.cpp

    r4555 r4698  
    1 /* $Id: oslibdos.cpp,v 1.50 2000-11-05 13:40:45 sandervl Exp $ */
     1/* $Id: oslibdos.cpp,v 1.51 2000-11-25 16:56:57 sandervl Exp $ */
    22/*
    33 * Wrappers for OS/2 Dos* API
     
    325325//******************************************************************************
    326326//NOTE: If name == NULL, allocated gettable unnamed shared memory
     327//OS/2 returns error 123 (invalid name) if the shared memory name includes
     328//colons. We need to replace them with underscores.
    327329//******************************************************************************
    328330DWORD OSLibDosAllocSharedMem(LPVOID *lplpMemAddr, DWORD size, DWORD flags, LPSTR name)
    329331{
    330332 APIRET rc;
    331  char  *sharedmemname = NULL;
     333 char  *sharedmemname = NULL, *tmp;
    332334
    333335  if(name) {
     
    338340  else  flags |= OBJ_GETTABLE;
    339341
     342  //SvL: Colons are unacceptable in shared memory names (for whatever reason)
     343  tmp = sharedmemname;
     344  while(*tmp != 0) {
     345        if(*tmp == ':') {
     346            *tmp = '_';
     347        }
     348        tmp++;
     349  }
     350
    340351  rc = DosAllocSharedMem(lplpMemAddr, sharedmemname, size, flags);
    341352  if(name) {
     
    350361{
    351362 APIRET rc;
    352  char  *sharedmemname = NULL;
     363 char  *sharedmemname = NULL, *tmp;
    353364
    354365  if(name) {
     
    356367        strcpy(sharedmemname, "\\SHAREMEM\\");
    357368        strcat(sharedmemname, name);
     369
     370        //SvL: Colons are unacceptable in shared memory names (for whatever reason)
     371        tmp = sharedmemname;
     372        while(*tmp != 0) {
     373            if(*tmp == ':') {
     374                *tmp = '_';
     375            }
     376            tmp++;
     377        }
    358378        rc = DosGetNamedSharedMem(lplpMemAddr, sharedmemname, PAG_READ|PAG_WRITE);
    359379        if(name) {
Note: See TracChangeset for help on using the changeset viewer.