2008/3/18, Stig Bjørlykke <stig.bjorlykke@xxxxxxxxx>:
I have no win32 experience to fix this, so if nobody can make this
work correctly I will propose the attached patch. This will leak some
memory on win32, but it's better than not working...
--
Stig Bjørlykke
I modified your patch slightly to address Windows platforms where MS VC 6 is not used to compile the binaries. Compilations made with VC 6 will therefor not leak memory while the otherones will (no long term solution though).
/ Regards, Peter
Index: epan/oids.c
===================================================================
--- epan/oids.c (revision 24688)
+++ epan/oids.c (working copy)
@@ -291,12 +291,16 @@
for (t = types; t->type ; t++ ) {
char* name = smiRenderType(sT, SMI_RENDER_NAME);
if (name && t->name && g_str_equal(name, t->name )) {
+#if !defined WIN32 || (defined WIN32 && MSC_VER == 1200)
free (name);
+#endif
return t->type;
}
+#if !defined WIN32 || (defined WIN32 && MSC_VER == 1200)
if (name) {
free (name);
}
+#endif
}
} while(( sT = smiGetParentType(sT) ));
@@ -384,9 +388,10 @@
oid1 = smiRenderOID(sN->oidlen, sN->oid, SMI_RENDER_QUALIFIED);
oid2 = smiRenderOID(elNode->oidlen, elNode->oid, SMI_RENDER_NAME);
k->name = g_strdup_printf("%s.%s", oid1, oid2);
+#if !defined WIN32 || (defined WIN32 && MSC_VER == 1200)
free (oid1);
free (oid2);
-
+#endif
k->hfid = -2;
k->ft_type = typedata ? typedata->ft_type : FT_BYTES;
k->display = typedata ? typedata->display : BASE_NONE;
@@ -575,7 +580,9 @@
key,
smiNode->oidlen,
smiNode->oid);
+#if !defined WIN32 || (defined WIN32 && MSC_VER == 1200)
free (oid);
+#endif
D(4,("\t\tNode: kind=%d oid=%s name=%s ",
oid_data->kind, oid_subid2string(smiNode->oid, smiNode->oidlen), oid_data->name ));
@@ -589,7 +596,11 @@
typedata->display,
NULL,
0,
+#if !defined WIN32 || (defined WIN32 && MSC_VER == 1200)
smiRenderOID(smiNode->oidlen, smiNode->oid, SMI_RENDER_ALL),
+#else
+ g_strdup (smiRenderOID(smiNode->oidlen, smiNode->oid, SMI_RENDER_ALL)),
+#endif
HFILL }};
oid_data->value_hfid = -1;