patch-src_svc_c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. --- libtirpc-1.0.1.orig/src/svc.c 2015-10-30 16:15:14.000000000 +0100
  2. +++ libtirpc-1.0.1/src/svc.c 2015-11-29 16:39:24.994903493 +0100
  3. @@ -99,7 +99,7 @@ xprt_register (xprt)
  4. {
  5. __svc_xports = (SVCXPRT **) calloc (_rpc_dtablesize(), sizeof (SVCXPRT *));
  6. if (__svc_xports == NULL)
  7. - return;
  8. + goto unlock;
  9. }
  10. if (sock < _rpc_dtablesize())
  11. {
  12. @@ -120,14 +120,14 @@ xprt_register (xprt)
  13. svc_pollfd[i].fd = sock;
  14. svc_pollfd[i].events = (POLLIN | POLLPRI |
  15. POLLRDNORM | POLLRDBAND);
  16. - return;
  17. + goto unlock;
  18. }
  19. new_svc_pollfd = (struct pollfd *) realloc (svc_pollfd,
  20. sizeof (struct pollfd)
  21. * (svc_max_pollfd + 1));
  22. if (new_svc_pollfd == NULL) /* Out of memory */
  23. - return;
  24. + goto unlock;
  25. svc_pollfd = new_svc_pollfd;
  26. ++svc_max_pollfd;
  27. @@ -135,6 +135,7 @@ xprt_register (xprt)
  28. svc_pollfd[svc_max_pollfd - 1].events = (POLLIN | POLLPRI |
  29. POLLRDNORM | POLLRDBAND);
  30. }
  31. +unlock:
  32. rwlock_unlock (&svc_fd_lock);
  33. }