You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2003/01/23 12:43:01 UTC

cvs commit: apr-util/dbm apr_dbm_sdbm.c

trawick     2003/01/23 03:43:01

  Modified:    .        CHANGES
               dbm      apr_dbm_sdbm.c
  Log:
  Fix brokenness in sdbm when sizeof(int) != sizeof(size_t)
  (e.g., 64-bit AIX, 64-bit Solaris).
  
  apr_datum_t is (char *, apr_size_t) and apr_sdbm_datum_t is (char *, int),
  and the CONVERT_DATUM and RETURN_DATUM macros in apr_dbm_sdbm.c assumed that
  the structures could be copied just by casting instead of copying member-by-
  member.
  
  PR:  14861
  
  Revision  Changes    Path
  1.96      +3 -0      apr-util/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apr-util/CHANGES,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- CHANGES	22 Jan 2003 17:45:20 -0000	1.95
  +++ CHANGES	23 Jan 2003 11:43:01 -0000	1.96
  @@ -1,5 +1,8 @@
   Changes with APR-util 0.9.2
   
  +  *) Fix brokenness in sdbm when sizeof(int) != sizeof(size_t)
  +     (e.g., 64-bit AIX, 64-bit Solaris).  PR 14861.  [Jeff Trawick]
  +
     *) Have buildconf copy required files from apr so that apr-util can build
        on its own.  [Craig Rodrigues <ro...@attbi.com>]
   
  
  
  
  1.10      +6 -6      apr-util/dbm/apr_dbm_sdbm.c
  
  Index: apr_dbm_sdbm.c
  ===================================================================
  RCS file: /home/cvs/apr-util/dbm/apr_dbm_sdbm.c,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- apr_dbm_sdbm.c	1 Jan 2003 00:02:19 -0000	1.9
  +++ apr_dbm_sdbm.c	23 Jan 2003 11:43:01 -0000	1.10
  @@ -78,16 +78,16 @@
   
   typedef apr_sdbm_t *real_file_t;
   
  -typedef apr_sdbm_datum_t *cvt_datum_t;
  -#define CONVERT_DATUM(cvt, pinput) ((cvt) = (apr_sdbm_datum_t *)(pinput))
  +typedef apr_sdbm_datum_t cvt_datum_t;
  +#define CONVERT_DATUM(cvt, pinput) ((cvt).dptr = (pinput)->dptr, (cvt).dsize = (pinput)->dsize)
   
   typedef apr_sdbm_datum_t result_datum_t;
  -#define RETURN_DATUM(poutput, rd) (*(poutput) = *(apr_datum_t *)&(rd))
  +#define RETURN_DATUM(poutput, rd) ((poutput)->dptr = (rd).dptr, (poutput)->dsize = (rd).dsize)
   
   #define APR_DBM_CLOSE(f)        apr_sdbm_close(f)
  -#define APR_DBM_FETCH(f, k, v)  apr_sdbm_fetch(f, &(v), *(k))
  -#define APR_DBM_STORE(f, k, v)  apr_sdbm_store(f, *(k), *(v), APR_SDBM_REPLACE)
  -#define APR_DBM_DELETE(f, k)    apr_sdbm_delete(f, *(k))
  +#define APR_DBM_FETCH(f, k, v)  apr_sdbm_fetch(f, &(v), (k))
  +#define APR_DBM_STORE(f, k, v)  apr_sdbm_store(f, (k), (v), APR_SDBM_REPLACE)
  +#define APR_DBM_DELETE(f, k)    apr_sdbm_delete(f, (k))
   #define APR_DBM_FIRSTKEY(f, k)  apr_sdbm_firstkey(f, &(k))
   #define APR_DBM_NEXTKEY(f, k, nk) apr_sdbm_nextkey(f, &(nk))
   #define APR_DBM_FREEDPTR(dptr)  NOOP_FUNCTION