summaryrefslogtreecommitdiff
path: root/main/lzo/src/lzo_swd.ch
diff options
context:
space:
mode:
Diffstat (limited to 'main/lzo/src/lzo_swd.ch')
-rw-r--r--main/lzo/src/lzo_swd.ch20
1 files changed, 15 insertions, 5 deletions
diff --git a/main/lzo/src/lzo_swd.ch b/main/lzo/src/lzo_swd.ch
index 566aca45..4a73a6b4 100644
--- a/main/lzo/src/lzo_swd.ch
+++ b/main/lzo/src/lzo_swd.ch
@@ -2,7 +2,7 @@
This file is part of the LZO real-time data compression library.
- Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
+ Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
The LZO library is free software; you can redistribute it and/or
@@ -237,20 +237,33 @@ void swd_insertdict(lzo_swd_p s, lzo_uint node, lzo_uint len)
//
************************************************************************/
+static void swd_exit(lzo_swd_p s);
+
static
int swd_init(lzo_swd_p s, const lzo_bytep dict, lzo_uint dict_len)
{
#if defined(__LZO_CHECKER)
+ unsigned r = 1;
s->b = (lzo_bytep) malloc(SWD_N + SWD_F + SWD_F);
s->head3 = (swd_uintp) malloc(sizeof(swd_uint) * SWD_HSIZE);
s->succ3 = (swd_uintp) malloc(sizeof(swd_uint) * (SWD_N + SWD_F));
s->best3 = (swd_uintp) malloc(sizeof(swd_uint) * (SWD_N + SWD_F));
s->llen3 = (swd_uintp) malloc(sizeof(swd_uint) * SWD_HSIZE);
+ r &= s->b != NULL;
+ r &= s->head3 != NULL;
+ r &= s->succ3 != NULL;
+ r &= s->best3 != NULL;
+ r &= s->llen3 != NULL;
#ifdef HEAD2
IF_HEAD2(s) {
s->head2 = (swd_uintp) malloc(sizeof(swd_uint) * 65536L);
+ r &= s->head2 != NULL;
}
#endif
+ if (r != 1) {
+ swd_exit(s);
+ return LZO_E_OUT_OF_MEMORY;
+ }
#endif
s->m_len = 0;
@@ -683,7 +696,4 @@ void swd_findbest(lzo_swd_p s)
#undef s_get_head3
-/*
-vi:ts=4:et
-*/
-
+/* vim:set ts=4 sw=4 et: */