| Summary: | [patch] getdata: memory leak on getdata error | ||
|---|---|---|---|
| Product: | [Applications] kst | Reporter: | D. V. Wiebe <dvw> |
| Component: | general | Assignee: | kst |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | 1.x | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: | memory leak patch for getdata | ||
|
Description
D. V. Wiebe
2005-12-22 04:26:50 UTC
Created attachment 14017 [details]
memory leak patch for getdata
SVN commit 490483 by staikos:
fix memory leak and assertion failure. Patches from Don
BUGS: 118837, 118838
M +21 -4 getdata.c
--- trunk/extragear/graphics/kst/kst/datasources/dirfile/getdata.c #490482:490483
@@ -1201,7 +1201,14 @@
error_code);
recurse_level--;
- if (*error_code != GD_E_OK) return(1);
+
+ if (*error_code != GD_E_OK)
+ return(1);
+
+ /* Nothing to lincomise */
+ if (*n_read == 0)
+ return 1;
+
ScaleData(data_out, return_type, *n_read, L->m[0], L->b[0]);
if (L->n_infields > 1) {
@@ -1230,8 +1237,10 @@
return_type, tmpbuf,
error_code);
recurse_level--;
- if (*error_code != GD_E_OK)
+ if (*error_code != GD_E_OK) {
+ free(tmpbuf);
return(1);
+ }
ScaleData(tmpbuf, return_type, n_read2, L->m[i], L->b[i]);
@@ -1290,8 +1299,14 @@
error_code);
recurse_level--;
- if (*error_code != GD_E_OK) return(1);
+ if (*error_code != GD_E_OK)
+ return 1;
+
+ /* Nothing to multiply */
+ if (*n_read == 0)
+ return 1;
+
recurse_level++;
/* find the samples per frame of the second field */
@@ -1316,8 +1331,10 @@
return_type, tmpbuf,
error_code);
recurse_level--;
- if (*error_code != GD_E_OK)
+ if (*error_code != GD_E_OK) {
+ free(tmpbuf);
return(1);
+ }
if (n_read2 > 0 && n_read2 * spf1 < *n_read * spf2) {
*n_read = n_read2 * spf1 / spf2;
|