v4l-memleak-fix.diff
modules/highgui/src/cap_libv4l.cpp (working copy) | ||
---|---|---|
821 | 821 | |
822 | 822 |
#ifdef USE_TEMP_BUFFER |
823 | 823 |
if (n_buffers == 0) { |
824 |
capture->buffers[MAX_V4L_BUFFERS].start = malloc(buf.length); |
|
825 |
capture->buffers[MAX_V4L_BUFFERS].length = buf.length; |
|
824 |
if (capture->buffers[MAX_V4L_BUFFERS].start) { |
|
825 |
free(capture->buffers[MAX_V4L_BUFFERS].start); |
|
826 |
capture->buffers[MAX_V4L_BUFFERS].start = NULL; |
|
827 |
} |
|
828 |
|
|
829 |
capture->buffers[MAX_V4L_BUFFERS].start = malloc(buf.length); |
|
830 |
capture->buffers[MAX_V4L_BUFFERS].length = buf.length; |
|
826 | 831 |
}; |
827 | 832 |
#endif |
828 | 833 |
} |
... | ... | |
1006 | 1011 |
capture->width = DEFAULT_V4L_WIDTH; |
1007 | 1012 |
capture->height = DEFAULT_V4L_HEIGHT; |
1008 | 1013 | |
1014 |
#ifdef USE_TEMP_BUFFER |
|
1015 |
capture->buffers[MAX_V4L_BUFFERS].start = NULL; |
|
1016 |
#endif |
|
1017 | ||
1009 | 1018 |
/* Select camera, or rather, V4L video source */ |
1010 | 1019 |
if (index<0) { // Asking for the first device available |
1011 | 1020 |
for (; autoindex<MAX_CAMERAS;autoindex++) |
... | ... | |
1184 | 1193 | |
1185 | 1194 |
} |
1186 | 1195 | |
1187 | ||
1188 | 1196 |
/* preparation is ok */ |
1189 | 1197 |
capture->FirstCapture = 0; |
1190 | 1198 |
} |
... | ... | |
1694 | 1702 |
if (capture->frame.imageData) |
1695 | 1703 |
cvFree(&capture->frame.imageData); |
1696 | 1704 | |
1705 |
#ifdef USE_TEMP_BUFFER |
|
1706 |
if (capture->buffers[MAX_V4L_BUFFERS].start) { |
|
1707 |
free(capture->buffers[MAX_V4L_BUFFERS].start); |
|
1708 |
capture->buffers[MAX_V4L_BUFFERS].start = NULL; |
|
1709 |
} |
|
1710 |
#endif |
|
1711 | ||
1697 | 1712 |
//v4l2_free_ranges(capture); |
1698 | 1713 |
//cvFree((void **)capture); |
1699 | 1714 |
} |