Malloc alignment to 32bits for H7
This commit is contained in:
+3
-2
@@ -25,6 +25,7 @@
|
||||
#include "libopenui_types.h"
|
||||
#include "libopenui_defines.h"
|
||||
#include "libopenui_depends.h"
|
||||
#include "libopenui_helpers.h"
|
||||
#include "debug.h"
|
||||
|
||||
constexpr uint8_t SOLID = 0xFF;
|
||||
@@ -188,7 +189,7 @@ class RLEBitmap:
|
||||
_width = *((uint16_t *)rle_data);
|
||||
_height = *(((uint16_t *)rle_data)+1);
|
||||
uint32_t pixels = _width * _height;
|
||||
data = (uint16_t*)malloc(pixels * sizeof(uint16_t));
|
||||
data = (uint16_t*)malloc(align32(pixels * sizeof(uint16_t)));
|
||||
decode((uint8_t *)data, pixels * sizeof(uint16_t), rle_data+4);
|
||||
data_end = data + pixels;
|
||||
}
|
||||
@@ -248,7 +249,7 @@ class BitmapBuffer: public BitmapBufferBase<pixel_t>
|
||||
, leakReported(false)
|
||||
#endif
|
||||
{
|
||||
data = (uint16_t *)malloc(width * height * sizeof(uint16_t));
|
||||
data = (uint16_t *)malloc(align32(width * height * sizeof(uint16_t)));
|
||||
data_end = data + (width * height);
|
||||
}
|
||||
|
||||
|
||||
@@ -66,6 +66,12 @@ inline int mod(int k, int n)
|
||||
return ((k %= n) < 0) ? k + n : k;
|
||||
}
|
||||
|
||||
inline unsigned align32(unsigned n)
|
||||
{
|
||||
unsigned rest = (n & 3u);
|
||||
return rest ? n + 4u - rest : n;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
inline T sgn(T a)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user