diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 044f72442ba52782b1cc93ce21029e840b76f18e..1c192d704b0b74a2758b9415126b2360e1b9dbfd 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,8 @@
 2002-01-30  Tom Tromey  <tromey@redhat.com>
 
+	* java/net/natPlainSocketImpl.cc (_Jv_recv): Added template
+	parameter for `recv' return type.
+
 	* verify.cc (handle_ret_insn): Check for subroutine merge here...
 	(state::merge): ... not here.
 	(subr_entry_info): New structure.
diff --git a/libjava/java/net/natPlainSocketImpl.cc b/libjava/java/net/natPlainSocketImpl.cc
index bbd700f05f82bac1388d10d9e2f0931cec1f9376..681144c67d4a5b9a4e94509d360fa3bc6b17f94e 100644
--- a/libjava/java/net/natPlainSocketImpl.cc
+++ b/libjava/java/net/natPlainSocketImpl.cc
@@ -71,9 +71,10 @@ _Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
 #endif
 
 // A wrapper for recv so we don't have to do configure tests.
-template <typename T_fd, typename T_buf, typename T_len, typename T_flags>
+template <typename T_ret, typename T_fd, typename T_buf,
+          typename T_len, typename T_flags>
 static inline ssize_t
-_Jv_recv (ssize_t (*recv_func) (T_fd s, T_buf buf, T_len len, T_flags flags),
+_Jv_recv (T_ret (*recv_func) (T_fd s, T_buf buf, T_len len, T_flags flags),
 	  int s, void *buf, size_t len, int flags)
 {
   return recv_func ((T_fd) s, (T_buf) buf, (T_len) len, (T_flags) flags);