diff --git a/filter/impl/generic_filter.go b/filter/impl/generic_filter.go
index 30a357ae645e63bbb4a7b59ebce33341cf9efe95..067939a34b889198a25b08af23892ad4037e642e 100644
--- a/filter/impl/generic_filter.go
+++ b/filter/impl/generic_filter.go
@@ -49,9 +49,9 @@ func (ef *GenericFilter) Invoke(invoker protocol.Invoker, invocation protocol.In
 		oldArguments := invocation.Arguments()
 
 		if oldParams, ok := oldArguments[2].([]interface{}); ok {
-			newParams := make([]hessian.Object, len(oldParams))
+			newParams := make([]hessian.Object, 0, len(oldParams))
 			for i := range oldParams {
-				newParams = append(newParams, 0, hessian.Object(struct2MapAll(oldParams[i])))
+				newParams = append(newParams, hessian.Object(struct2MapAll(oldParams[i])))
 			}
 			newArguments := []interface{}{
 				oldArguments[0],