#include "util.h"
#include "osl_core.h"
-/* Taken from Drepper: How to write shared libraries, Appendix B. */
+/*
+ * Taken from Drepper: How to write shared libraries, Appendix B.
+ *
+ * The main reason for this rather fancy implementation of strerror() is to
+ * avoid having an array of pointers. This is desirable because initialized
+ * pointer variables increase the startup time of the library due to the
+ * processing of relocations.
+ */
#include <stddef.h>
#define MSGSTRFIELD(line) MSGSTRFIELD1(line)
#define MSGSTRFIELD1(line) str##line
}
remove_rb_node(t, col_num, r);
if (cd->storage_type == OSL_NO_STORAGE) { /* TODO: If fixed size, reuse object? */
- free(r->volatile_objects[col->volatile_num].data);
+ if (!(cd->storage_flags & OSL_DONT_FREE))
+ free(r->volatile_objects[col->volatile_num].data);
r->volatile_objects[col->volatile_num] = *obj;
} else if (cd->storage_type == OSL_DISK_STORAGE) {
char *ds_name;
unsigned num_rows;
int ret;
+ *result = NULL;
if (n == 0)
return -E_OSL_RB_KEY_NOT_FOUND;
ret = osl_get_num_rows(t, &num_rows);