diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/libtremor/sharedbook.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/apps/codecs/libtremor/sharedbook.c b/apps/codecs/libtremor/sharedbook.c index 9519976c95..884920ecda 100644 --- a/apps/codecs/libtremor/sharedbook.c +++ b/apps/codecs/libtremor/sharedbook.c | |||
@@ -122,7 +122,20 @@ static ogg_uint32_t *_make_words(long *l,long n,long sparsecount){ | |||
122 | }else | 122 | }else |
123 | if(sparsecount==0)count++; | 123 | if(sparsecount==0)count++; |
124 | } | 124 | } |
125 | 125 | ||
126 | /* sanity check the huffman tree; an underpopulated tree must be | ||
127 | rejected. The only exception is the one-node pseudo-nil tree, | ||
128 | which appears to be underpopulated because the tree doesn't | ||
129 | really exist; there's only one possible 'codeword' or zero bits, | ||
130 | but the above tree-gen code doesn't mark that. */ | ||
131 | if(sparsecount != 1){ | ||
132 | for(i=1;i<33;i++) | ||
133 | if(marker[i] & (0xffffffffUL>>(32-i))){ | ||
134 | _ogg_free(r); | ||
135 | return(NULL); | ||
136 | } | ||
137 | } | ||
138 | |||
126 | /* bitreverse the words because our bitwise packer/unpacker is LSb | 139 | /* bitreverse the words because our bitwise packer/unpacker is LSb |
127 | endian */ | 140 | endian */ |
128 | for(i=0,count=0;i<n;i++){ | 141 | for(i=0,count=0;i<n;i++){ |