GithubHelp home page GithubHelp logo

node-vpk's People

Contributors

thesupremecommander avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

node-vpk's Issues

Too many open files

Hi! ๐Ÿ‘‹

Firstly, thanks for your work on this project! ๐Ÿ™‚

Today I used patch-package to patch [email protected] for the project I'm working on.

Here is the diff that solved my problem:

diff --git a/node_modules/vpk/index.js b/node_modules/vpk/index.js
index 17ba42e..7fef5dd 100644
--- a/node_modules/vpk/index.js
+++ b/node_modules/vpk/index.js
@@ -148,9 +148,11 @@ class VPK {
 
         let file = new Buffer(entry.preloadBytes + entry.entryLength);
 
+        let fileDescriptor = undefined;
+
         if (entry.preloadBytes > 0) {
-            let directoryFile = fs.openSync(this.directoryPath, 'r');
-            fs.readSync(directoryFile, file, 0, entry.preloadBytes, entry.preloadOffset);
+            fileDescriptor = fs.openSync(this.directoryPath, 'r');
+            fs.readSync(fileDescriptor, file, 0, entry.preloadBytes, entry.preloadOffset);
         }
 
         if (entry.entryLength > 0) {
@@ -164,18 +166,21 @@ class VPK {
                     offset += HEADER_2_LENGTH;
                 }
 
-                let directoryFile = fs.openSync(this.directoryPath, 'r');
-                fs.readSync(directoryFile, file, entry.preloadBytes, entry.entryLength, offset + entry.entryOffset);
+                fileDescriptor = fs.openSync(this.directoryPath, 'r');
+                fs.readSync(fileDescriptor, file, entry.preloadBytes, entry.entryLength, offset + entry.entryOffset);
             }
             else {
                 let fileIndex = ('000' + entry.archiveIndex).slice(-3);
                 let archivePath = this.directoryPath.replace(/_dir\.vpk$/, '_' + fileIndex + '.vpk');
 
-                let archiveFile = fs.openSync(archivePath, 'r');
-                fs.readSync(archiveFile, file, entry.preloadBytes, entry.entryLength, entry.entryOffset);
+                fileDescriptor = fs.openSync(archivePath, 'r');
+                fs.readSync(fileDescriptor, file, entry.preloadBytes, entry.entryLength, entry.entryOffset);
             }
         }
 
+        if( fileDescriptor )
+            fs.closeSync( fileDescriptor );
+
         if (crc.crc32(file) !== entry.crc) {
             throw new Error('CRC does not match');
         }

This issue body was partially generated by patch-package.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.