diff --git a/repos/ports/ports/virtualbox.hash b/repos/ports/ports/virtualbox.hash index e80fc5f25..8604adbb4 100644 --- a/repos/ports/ports/virtualbox.hash +++ b/repos/ports/ports/virtualbox.hash @@ -1 +1 @@ -d2830608e86c55d6124ac016dae652fa6a69ea3e +13aca05c49d35f7ce7a2cfd25d2751d9d6de9019 diff --git a/repos/ports/src/virtualbox/sharedfolder_pagelist.patch b/repos/ports/src/virtualbox/sharedfolder_pagelist.patch new file mode 100644 index 000000000..a6e2ae607 --- /dev/null +++ b/repos/ports/src/virtualbox/sharedfolder_pagelist.patch @@ -0,0 +1,87 @@ ++++ src/app/virtualbox/src/VBox/HostServices/SharedFolders/service.cpp +@@ -546,6 +546,14 @@ + } + else + { ++ ++ ++ /* WORKAROUND start */ ++ uint32_t read = 0; ++ ++ while (paParms[3].u.uint32 && read < paParms[3].u.uint32) { ++ ++ + /* Execute the function. */ + if (pStatusLed) + { +@@ -559,13 +567,25 @@ + + if (RT_SUCCESS(rc)) + { ++ read += count; ++ offset += count; ++ pBuffer += count; ++ count = paParms[3].u.uint32 - read; ++ + /* Update parameters.*/ +- paParms[3].u.uint32 = count; ++ //paParms[3].u.uint32 = count; + } + else + { + paParms[3].u.uint32 = 0; /* nothing read */ + } ++ ++ ++ ++ } /* WORKAROUND - End */ ++ ++ ++ + } + } + break; +@@ -613,6 +633,16 @@ + } + else + { ++ ++ ++ ++ /* WORKAROUND start */ ++ uint32_t write = 0; ++ ++ while (paParms[3].u.uint32 && write < paParms[3].u.uint32) { ++ ++ ++ + /* Execute the function. */ + if (pStatusLed) + { +@@ -626,13 +656,25 @@ + + if (RT_SUCCESS(rc)) + { ++ write += count; ++ offset += count; ++ pBuffer += count; ++ count = paParms[3].u.uint32 - write; ++ + /* Update parameters.*/ +- paParms[3].u.uint32 = count; ++ //paParms[3].u.uint32 = count; + } + else + { + paParms[3].u.uint32 = 0; /* nothing read */ + } ++ ++ ++ ++ } /* WORKAROUND - End */ ++ ++ ++ + } + } + break;