diff -up systemtap-0.6.1/staptree.cxx.orig systemtap-0.6.1/staptree.cxx --- systemtap-0.6.1/staptree.cxx.orig 2008-01-17 21:53:20.000000000 -0500 +++ systemtap-0.6.1/staptree.cxx 2008-02-12 11:16:00.000000000 -0500 @@ -2370,3 +2370,30 @@ deep_copy_visitor::deep_copy (expression require (&v, &n, s); return n; } + +template <> void +require (deep_copy_visitor* v, indexable** dst, indexable* src) +{ + if (src != NULL) + { + symbol *array_src=NULL, *array_dst=NULL; + hist_op *hist_src=NULL, *hist_dst=NULL; + + classify_indexable(src, array_src, hist_src); + + *dst = NULL; + + if (array_src) + { + require (v, &array_dst, array_src); + *dst = array_dst; + } + else + { + require (v, &hist_dst, hist_src); + *dst = hist_dst; + } + assert (*dst); + } +} + diff -up systemtap-0.6.1/staptree.h.orig systemtap-0.6.1/staptree.h --- systemtap-0.6.1/staptree.h.orig 2008-01-17 21:53:20.000000000 -0500 +++ systemtap-0.6.1/staptree.h 2008-02-12 11:16:00.000000000 -0500 @@ -846,31 +846,8 @@ require (deep_copy_visitor* v, T* dst, T } } -template <> static void -require (deep_copy_visitor* v, indexable** dst, indexable* src) -{ - if (src != NULL) - { - symbol *array_src=NULL, *array_dst=NULL; - hist_op *hist_src=NULL, *hist_dst=NULL; - - classify_indexable(src, array_src, hist_src); - - *dst = NULL; - - if (array_src) - { - require (v, &array_dst, array_src); - *dst = array_dst; - } - else - { - require (v, &hist_dst, hist_src); - *dst = hist_dst; - } - assert (*dst); - } -} +template <> void +require (deep_copy_visitor* v, indexable** dst, indexable* src); template void provide (deep_copy_visitor* v, T src)