#define ALLOCATE_FIXED_TYPE(type, structtype, result) \
do { \
result = xnew(structtype); \
+ assert(result != NULL); \
INCREMENT_CONS_COUNTER(sizeof(structtype), #type); \
} while (0)
#define ALLOCATE_ATOMIC_FIXED_TYPE(type, structtype, result) \
do { \
result = xnew_atomic(structtype); \
+ assert(result != NULL); \
INCREMENT_CONS_COUNTER(sizeof(structtype), #type); \
} while (0)
Lisp_Object make_uninit_string(Bytecount length)
{
- Lisp_String *s;
+ Lisp_String *s = NULL;
#if !defined HAVE_BDWGC || !defined EF_USE_BDWGC
EMACS_INT fullsize = STRING_FULLSIZE(length);
#endif /* !BDWGC */
set_lheader_implementation(&s->lheader, &lrecord_string);
string_register_finaliser(s);
-#if defined HAVE_BDWGC && defined EF_USE_BDWGC
{
- Bufbyte *foo = xnew_atomic_array(Bufbyte, length+1);
- set_string_data(s, foo);
- }
+ Bufbyte *foo = NULL;
+#if defined HAVE_BDWGC && defined EF_USE_BDWGC
+ foo = xnew_atomic_array(Bufbyte, length+1);
+ assert(foo != NULL);
#else
- set_string_data(s, BIG_STRING_FULLSIZE_P(fullsize)
- ? xnew_atomic_array(Bufbyte, length + 1)
- : allocate_string_chars_struct(s, fullsize)->chars);
+ if (BIG_STRING_FULLSIZE_P(fullsize)) {
+ foo = xnew_atomic_array(Bufbyte, length + 1);
+ assert(foo != NULL);
+ } else {
+ foo = allocate_string_chars_struct(s, fullsize)->chars;
+ assert(foo != NULL);
+ }
#endif
-
+ set_string_data(s, foo);
+ }
set_string_length(s, length);
s->plist = Qnil;
#ifdef EF_USE_COMPRE
dfc_simplified_sink_type, &dfc_sink); \
\
DFC_##sink_type##_USE_CONVERTED_DATA (sink); \
- assert((sink)!=NULL); \
} while (0)
#define TO_INTERNAL_FORMAT(source_type, source, sink_type, sink, coding_system) \
dfc_simplified_sink_type, &dfc_sink); \
\
DFC_##sink_type##_USE_CONVERTED_DATA (sink); \
- assert((sink)!=NULL); \
} while (0)
#ifdef FILE_CODING
do { \
dfc_source.data.ptr = DFC_CPP_CAR val; \
dfc_source.data.len = DFC_CPP_CDR val; \
+ assert(dfc_source.data.ptr != NULL); \
dfc_simplified_source_type = DFC_TYPE_DATA; \
} while (0)
#define DFC_SOURCE_C_STRING_TO_ARGS(val) \
do { \
- dfc_source.data.len = \
- strlen((const char*)(dfc_source.data.ptr = (val))); \
+ dfc_source.data.ptr = (val); \
+ assert(dfc_source.data.ptr != NULL); \
+ dfc_source.data.len = strlen((const char*) \
+ (dfc_source.data.ptr)); \
dfc_simplified_source_type = DFC_TYPE_DATA; \
} while (0)
#define DFC_SOURCE_LISP_STRING_TO_ARGS(val) \
Lisp_Opaque *dfc_slota = XOPAQUE (val); \
dfc_source.data.ptr = OPAQUE_DATA (dfc_slota); \
dfc_source.data.len = OPAQUE_SIZE (dfc_slota); \
+ assert(dfc_source.data.ptr != NULL); \
dfc_simplified_source_type = DFC_TYPE_DATA; \
} while (0)
} *dfc_aliasing_voidpp;
#define DFC_ALLOCA_USE_CONVERTED_DATA(sink) do { \
void *dfc_sink_ret = alloca(dfc_sink.data.len + 1); \
+ assert(dfc_sink_ret != NULL); \
memcpy(dfc_sink_ret, dfc_sink.data.ptr, \
dfc_sink.data.len + 1); \
((dfc_aliasing_voidpp)&(DFC_CPP_CAR sink))->p = \
#define DFC_MALLOC_USE_CONVERTED_DATA(sink) \
do { \
void *dfc_sink_ret = xmalloc_atomic(dfc_sink.data.len + 1); \
+ assert(dfc_sink_ret != NULL); \
memcpy(dfc_sink_ret, dfc_sink.data.ptr, \
dfc_sink.data.len + 1); \
((dfc_aliasing_voidpp)&(DFC_CPP_CAR sink))->p = \
#define DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA(sink) \
do { \
void *dfc_sink_ret = alloca (dfc_sink.data.len + 1); \
+ assert(dfc_sink_ret != NULL); \
memcpy(dfc_sink_ret, dfc_sink.data.ptr, \
dfc_sink.data.len + 1); \
(sink) = dfc_sink_ret; \
#define DFC_C_STRING_MALLOC_USE_CONVERTED_DATA(sink) \
do { \
void *dfc_sink_ret = xmalloc_atomic(dfc_sink.data.len + 1); \
+ assert(dfc_sink_ret != NULL); \
memcpy(dfc_sink_ret, dfc_sink.data.ptr, \
dfc_sink.data.len + 1); \
(sink) = dfc_sink_ret; \
} while (0)
#define DFC_LISP_STRING_USE_CONVERTED_DATA(sink) \
- sink = make_string( \
- (const Bufbyte*)dfc_sink.data.ptr, dfc_sink.data.len)
-#define DFC_LISP_OPAQUE_USE_CONVERTED_DATA(sink) \
- sink = make_opaque(dfc_sink.data.ptr, dfc_sink.data.len)
+ do { \
+ sink = make_string((const Bufbyte*)dfc_sink.data.ptr, \
+ dfc_sink.data.len); \
+ assert(!NILP(sink)); \
+ } while (0)
+#define DFC_LISP_OPAQUE_USE_CONVERTED_DATA(sink) \
+ do { \
+ sink = make_opaque(dfc_sink.data.ptr, \
+ dfc_sink.data.len); \
+ assert(!NILP(sink)); \
+ } while (0)
+
#define DFC_LISP_LSTREAM_USE_CONVERTED_DATA(sink) /* data already used */
#define DFC_LISP_BUFFER_USE_CONVERTED_DATA(sink) \
Lstream_delete (XLSTREAM (dfc_sink.lisp_object))
{
Lisp_Opaque *p = (Lisp_Opaque *)
alloc_lcrecord(aligned_sizeof_opaque(size), &lrecord_opaque);
- p->size = size;
- if (data == OPAQUE_CLEAR)
- memset(p->data, '\0', size);
- else if (data == OPAQUE_UNINIT)
- DO_NOTHING;
- else
- memcpy(p->data, data, size);
-
- {
- Lisp_Object val;
- XSETOPAQUE(val, p);
- return val;
+ assert(p!=NULL);
+ if(p != NULL) {
+ p->size = size;
+
+ if (data == OPAQUE_CLEAR)
+ memset(p->data, '\0', size);
+ else if (data == OPAQUE_UNINIT)
+ DO_NOTHING;
+ else
+ memcpy(p->data, data, size);
+
+ {
+ Lisp_Object val;
+ XSETOPAQUE(val, p);
+ return val;
+ }
}
+ return Qnil;
}
/* This will not work correctly for opaques with subobjects! */