unsigned int offset_mnote;
};
+static void *
+exif_data_alloc (ExifData *data, unsigned int i)
+{
+ void *d;
+
+ /* This is the only call to calloc in this file. */
+ d = calloc (i, 1);
+ if (d) return d;
+
+ if (data) EXIF_LOG_NO_MEMORY (data->priv->log, "ExifData", i);
+ return NULL;
+}
+
ExifMnoteData *
exif_data_get_mnote_data (ExifData *d)
{
ExifData *data;
unsigned int i;
- data = malloc (sizeof (ExifData));
- if (!data)
- return (NULL);
- memset (data, 0, sizeof (ExifData));
- data->priv = malloc (sizeof (ExifDataPrivate));
- if (!data->priv) {
- free (data);
- return (NULL);
- }
- memset (data->priv, 0, sizeof (ExifDataPrivate));
+ data = exif_data_alloc (NULL, sizeof (ExifData));
+ if (!data) return (NULL);
+ data->priv = exif_data_alloc (data, sizeof (ExifDataPrivate));
+ if (!data->priv) { free (data); return (NULL); }
data->priv->ref_count = 1;
for (i = 0; i < EXIF_IFD_COUNT; i++) {
if (size < doff + s)
return;
- entry->data = malloc (s);
- if (!entry->data) {
- EXIF_LOG_NO_MEMORY (data->priv->log, "ExifData", s);
- return;
- }
+ entry->data = exif_data_alloc (data, s);
+ if (!entry->data) return;
entry->size = s;
memcpy (entry->data, d + doff, s);
(int) ds, (int) offset, (int) size);
return;
}
- if (data->data)
- free (data->data);
+ if (data->data) free (data->data);
data->size = size;
- data->data = malloc (data->size);
- if (!data->data) {
- EXIF_LOG_NO_MEMORY (data->priv->log, "ExifData", data->size);
- return;
- }
+ data->data = exif_data_alloc (data, data->size);
+ if (!data->data) return;
memcpy (data->data, d + offset, data->size);
}
/* Header */
*ds = 14;
- *d = malloc (*ds);
- if (!*d)
- return;
+ *d = exif_data_alloc (data, *ds);
+ if (!*d) return;
memcpy (*d, ExifHeader, 6);
/* Order (offset 6) */
ExifLog *log;
};
+static void *
+exif_loader_alloc (ExifLoader *l, unsigned int i)
+{
+ void *d;
+
+ if (!i) return NULL;
+
+ /* This is the only call to calloc in this file. */
+ d = calloc (i, 1);
+ if (d) return d;
+
+ if (l) EXIF_LOG_NO_MEMORY (l->log, "ExifLog", i);
+ return NULL;
+}
+
#undef MIN
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
if (eld->state == EL_EXIF_FOUND && len_remain > 0) {
if (eld->buf == NULL) {
- eld->buf = malloc (sizeof (unsigned char) * eld->size);
+ eld->buf = exif_loader_alloc (eld, eld->size);
if (!eld->buf) return 0;
eld->bytes_read = 0;
}
ExifLoader *
exif_loader_new (void)
{
- ExifLoader *loader = malloc (sizeof (ExifLoader));
-
+ ExifLoader *loader;
+
+ loader = exif_loader_alloc (NULL, sizeof (ExifLoader));
if (!loader) return NULL;
- memset (loader, 0, sizeof (ExifLoader));
loader->ref_count = 1;
return loader;