Oops, fix segfault in linux/proc_map.
I've commited the wrong patch, got lost in the svn->git change.
This commit is contained in:
5
NEWS
5
NEWS
@@ -1,3 +1,8 @@
|
|||||||
|
3 May 2009: Overview of changes in 2.27.2
|
||||||
|
=========================================
|
||||||
|
* linux:
|
||||||
|
- glibtop_get_proc_map: oops, fixed segfault.
|
||||||
|
|
||||||
3 May 2009: Overview of changes in 2.27.1
|
3 May 2009: Overview of changes in 2.27.1
|
||||||
=========================================
|
=========================================
|
||||||
* linux:
|
* linux:
|
||||||
|
@@ -4,7 +4,7 @@ dnl
|
|||||||
|
|
||||||
m4_define([libgtop_major_version], [2])
|
m4_define([libgtop_major_version], [2])
|
||||||
m4_define([libgtop_minor_version], [27])
|
m4_define([libgtop_minor_version], [27])
|
||||||
m4_define([libgtop_micro_version], [1])
|
m4_define([libgtop_micro_version], [2])
|
||||||
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
m4_define([libgtop_version], [libgtop_major_version.libgtop_minor_version.libgtop_micro_version])
|
||||||
|
|
||||||
dnl increment if the interface has additions, changes, removals.
|
dnl increment if the interface has additions, changes, removals.
|
||||||
|
@@ -192,10 +192,10 @@ glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf, pid_t pid)
|
|||||||
It's the average number of entry per process on my laptop
|
It's the average number of entry per process on my laptop
|
||||||
*/
|
*/
|
||||||
|
|
||||||
size_t added = 0;
|
size_t added = 0, entry_list_capacity = 100;
|
||||||
GArray *entry_list = g_array_sized_new(FALSE, FALSE,
|
GArray *entry_list = g_array_sized_new(FALSE, FALSE,
|
||||||
sizeof(glibtop_map_entry),
|
sizeof(glibtop_map_entry),
|
||||||
100);
|
entry_list_capacity);
|
||||||
FILE *maps;
|
FILE *maps;
|
||||||
const char *filename;
|
const char *filename;
|
||||||
gboolean has_smaps;
|
gboolean has_smaps;
|
||||||
@@ -271,8 +271,11 @@ glibtop_get_proc_map_s (glibtop *server, glibtop_proc_map *buf, pid_t pid)
|
|||||||
element.
|
element.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (G_UNLIKELY(added >= entry_list->len)) {
|
g_debug("added = %d len = %d\n", (int)added, (int)entry_list_capacity);
|
||||||
g_array_set_size(entry_list, 2 * entry_list->len);
|
|
||||||
|
if (G_UNLIKELY(added >= entry_list_capacity)) {
|
||||||
|
entry_list_capacity *= 2;
|
||||||
|
g_array_set_size(entry_list, entry_list_capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
entry = &g_array_index(entry_list, glibtop_map_entry, added++);
|
entry = &g_array_index(entry_list, glibtop_map_entry, added++);
|
||||||
@@ -308,7 +311,7 @@ eof:
|
|||||||
|
|
||||||
buf->flags = _glibtop_sysdeps_proc_map;
|
buf->flags = _glibtop_sysdeps_proc_map;
|
||||||
|
|
||||||
buf->number = entry_list->len;
|
buf->number = added;
|
||||||
buf->size = sizeof (glibtop_map_entry);
|
buf->size = sizeof (glibtop_map_entry);
|
||||||
buf->total = buf->number * buf->size;
|
buf->total = buf->number * buf->size;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user