| OLD | NEW |
| 1 // Copyright 2012 Google Inc. All Rights Reserved. | 1 // Copyright 2012 Google Inc. All Rights Reserved. |
| 2 // | 2 // |
| 3 // Use of this source code is governed by a BSD-style license | 3 // Use of this source code is governed by a BSD-style license |
| 4 // that can be found in the COPYING file in the root of the source | 4 // that can be found in the COPYING file in the root of the source |
| 5 // tree. An additional intellectual property rights grant can be found | 5 // tree. An additional intellectual property rights grant can be found |
| 6 // in the file PATENTS. All contributing project authors may | 6 // in the file PATENTS. All contributing project authors may |
| 7 // be found in the AUTHORS file in the root of the source tree. | 7 // be found in the AUTHORS file in the root of the source tree. |
| 8 // ----------------------------------------------------------------------------- | 8 // ----------------------------------------------------------------------------- |
| 9 // | 9 // |
| 10 // Misc. common utility functions | 10 // Misc. common utility functions |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 const uint64_t total_size = nmemb * size; | 168 const uint64_t total_size = nmemb * size; |
| 169 if (nmemb == 0) return 1; | 169 if (nmemb == 0) return 1; |
| 170 if ((uint64_t)size > WEBP_MAX_ALLOCABLE_MEMORY / nmemb) return 0; | 170 if ((uint64_t)size > WEBP_MAX_ALLOCABLE_MEMORY / nmemb) return 0; |
| 171 if (total_size != (size_t)total_size) return 0; | 171 if (total_size != (size_t)total_size) return 0; |
| 172 #if defined(PRINT_MEM_INFO) && defined(MALLOC_FAIL_AT) | 172 #if defined(PRINT_MEM_INFO) && defined(MALLOC_FAIL_AT) |
| 173 if (countdown_to_fail > 0 && --countdown_to_fail == 0) { | 173 if (countdown_to_fail > 0 && --countdown_to_fail == 0) { |
| 174 return 0; // fake fail! | 174 return 0; // fake fail! |
| 175 } | 175 } |
| 176 #endif | 176 #endif |
| 177 #if defined(MALLOC_LIMIT) | 177 #if defined(MALLOC_LIMIT) |
| 178 if (mem_limit > 0 && total_mem + total_size >= mem_limit) { | 178 if (mem_limit > 0) { |
| 179 return 0; // fake fail! | 179 const uint64_t new_total_mem = (uint64_t)total_mem + total_size; |
| 180 if (new_total_mem != (size_t)new_total_mem || |
| 181 new_total_mem > mem_limit) { |
| 182 return 0; // fake fail! |
| 183 } |
| 180 } | 184 } |
| 181 #endif | 185 #endif |
| 182 | 186 |
| 183 return 1; | 187 return 1; |
| 184 } | 188 } |
| 185 | 189 |
| 186 void* WebPSafeMalloc(uint64_t nmemb, size_t size) { | 190 void* WebPSafeMalloc(uint64_t nmemb, size_t size) { |
| 187 void* ptr; | 191 void* ptr; |
| 188 Increment(&num_malloc_calls); | 192 Increment(&num_malloc_calls); |
| 189 if (!CheckSizeArgumentsOverflow(nmemb, size)) return NULL; | 193 if (!CheckSizeArgumentsOverflow(nmemb, size)) return NULL; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 } | 300 } |
| 297 } | 301 } |
| 298 return num_colors; | 302 return num_colors; |
| 299 } | 303 } |
| 300 | 304 |
| 301 #undef MAX_COLOR_COUNT | 305 #undef MAX_COLOR_COUNT |
| 302 #undef COLOR_HASH_SIZE | 306 #undef COLOR_HASH_SIZE |
| 303 #undef COLOR_HASH_RIGHT_SHIFT | 307 #undef COLOR_HASH_RIGHT_SHIFT |
| 304 | 308 |
| 305 //------------------------------------------------------------------------------ | 309 //------------------------------------------------------------------------------ |
| OLD | NEW |