Mercurial > hg > release > icedtea7-forest-2.6 > jdk
changeset 9690:25c5bade0406
8206301: Improve NIO stability
Reviewed-by: alanb, mschoene, rhalade
author | igerasim |
---|---|
date | Thu, 26 Jul 2018 04:36:08 -0700 |
parents | c85507fa74f8 |
children | 30a937b33d21 |
files | src/windows/native/sun/nio/ch/DatagramDispatcher.c src/windows/native/sun/nio/ch/WindowsSelectorImpl.c |
diffstat | 2 files changed, 14 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/windows/native/sun/nio/ch/DatagramDispatcher.c Mon Jul 23 21:34:30 2018 -0700 +++ b/src/windows/native/sun/nio/ch/DatagramDispatcher.c Thu Jul 26 04:36:08 2018 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -95,6 +95,10 @@ jint fd = fdval(env, fdo); struct iovec *iovp = (struct iovec *)address; WSABUF *bufs = malloc(len * sizeof(WSABUF)); + if (bufs == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return IOS_THROWN; + } /* copy iovec into WSABUF */ for(i=0; i<len; i++) { @@ -182,6 +186,10 @@ jint fd = fdval(env, fdo); struct iovec *iovp = (struct iovec *)address; WSABUF *bufs = malloc(len * sizeof(WSABUF)); + if (bufs == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return IOS_THROWN; + } /* copy iovec into WSABUF */ for(i=0; i<len; i++) {
--- a/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c Mon Jul 23 21:34:30 2018 -0700 +++ b/src/windows/native/sun/nio/ch/WindowsSelectorImpl.c Thu Jul 26 04:36:08 2018 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -208,6 +208,10 @@ /* Prepare corresponding buffer if needed, and then read */ if (bytesToRead > WAKEUP_SOCKET_BUF_SIZE) { char* buf = (char*)malloc(bytesToRead); + if (buf == NULL) { + JNU_ThrowOutOfMemoryError(env, NULL); + return; + } recv(scinFd, buf, bytesToRead, 0); free(buf); } else {