Rework of berbuf allocation:

Moved BerElementBuffer to lber_pvt.h
	Defined union by macro so it can be easily reused.
Updated client/tools/common.c.
This commit is contained in:
Kurt Zeilenga 2003-10-13 18:09:15 +00:00
parent 35455699e7
commit a2f36ae2d3
3 changed files with 19 additions and 14 deletions

View File

@ -20,6 +20,7 @@
#include "lutil_ldap.h"
#include "ldap_defaults.h"
#include "ldap_pvt.h"
#include "lber_pvt.h"
#include "common.h"
@ -762,8 +763,8 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
}
if ( assertctl ) {
char berbuf[LBER_ELEMENT_SIZEOF];
BerElement *ber = (BerElement *)berbuf;
BerElementBuffer berbuf;
BerElement *ber = (BerElement *)&berbuf;
if( assertion == NULL || *assertion == '\0' ) {
fprintf( stderr, "Assertion=<empty>\n" );

View File

@ -157,18 +157,6 @@ extern char ber_pvt_opt_on;
#define LBER_OPT_SUCCESS (0)
#define LBER_OPT_ERROR (-1)
#define LBER_ELEMENT_SIZEOF (256) /* must be >= sizeof(BerElement) */
typedef union ber_buffer_u {
char charbuf[LBER_ELEMENT_SIZEOF];
/* force alignment */
int intbuf;
long longbuf;
float floatbuf;
double doublebuf;
char* ptrbuf;
} BerElementBuffer;
typedef struct berelement BerElement;
typedef struct sockbuf Sockbuf;
typedef struct seqorset Seqorset;

View File

@ -21,6 +21,22 @@
LDAP_BEGIN_DECL
/* for allocating aligned buffers (on the stack) */
#define LBER_ALIGN_BUFFER(uname,size) \
union LDAP_CONCAT(lber_,uname) { \
char buffer[size]; \
\
/* force alignment */ \
int ialign; \
long lalign; \
float falign; \
double dalign; \
char* palign; \
}
#define LBER_ELEMENT_SIZEOF (256) /* must be >= sizeof(BerElement) */
typedef LBER_ALIGN_BUFFER(berelement_u,LBER_ELEMENT_SIZEOF) BerElementBuffer;
typedef struct sockbuf_buf {
ber_len_t buf_size;
ber_len_t buf_ptr;