mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 23:21:54 +00:00 
			
		
		
		
	Actually increase request memory for json parsing (#3331)
This commit is contained in:
		| @@ -54,9 +54,8 @@ void parse_json(const std::string &data, const json_parse_t &f) { | |||||||
|   const size_t free_heap = heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL); |   const size_t free_heap = heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL); | ||||||
| #endif | #endif | ||||||
|   bool pass = false; |   bool pass = false; | ||||||
|  |   size_t request_size = std::min(free_heap - 2048, (size_t)(data.size() * 1.5)); | ||||||
|   do { |   do { | ||||||
|     const size_t request_size = std::min(free_heap - 2048, (size_t)(data.size() * 1.5)); |  | ||||||
|  |  | ||||||
|     DynamicJsonDocument json_document(request_size); |     DynamicJsonDocument json_document(request_size); | ||||||
|     if (json_document.memoryPool().buffer() == nullptr) { |     if (json_document.memoryPool().buffer() == nullptr) { | ||||||
|       ESP_LOGE(TAG, "Could not allocate memory for JSON document! Requested %u bytes, free heap: %u", request_size, |       ESP_LOGE(TAG, "Could not allocate memory for JSON document! Requested %u bytes, free heap: %u", request_size, | ||||||
| @@ -76,7 +75,8 @@ void parse_json(const std::string &data, const json_parse_t &f) { | |||||||
|         ESP_LOGE(TAG, "Can not allocate more memory for deserialization. Consider making source string smaller"); |         ESP_LOGE(TAG, "Can not allocate more memory for deserialization. Consider making source string smaller"); | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
|       ESP_LOGW(TAG, "Increasing memory allocation."); |       ESP_LOGV(TAG, "Increasing memory allocation."); | ||||||
|  |       request_size *= 2; | ||||||
|       continue; |       continue; | ||||||
|     } else { |     } else { | ||||||
|       ESP_LOGE(TAG, "JSON parse error: %s", err.c_str()); |       ESP_LOGE(TAG, "JSON parse error: %s", err.c_str()); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user