@@ -541,21 +541,8 @@ Napi::Value PrintDirectWrapped(const Napi::CallbackInfo& args) {
541541 wd->errorPrefix = " PrintDirect" ;
542542
543543 bool usedTemp = false ;
544- Napi::Reference<Napi::Buffer<char >> bufRef;
545- bool haveBufferRef = false ;
546- if (args[0 ].IsBuffer ()) {
547- Napi::Buffer<char > b = args[0 ].As <Napi::Buffer<char >>();
548- if (dataLen <= STREAM_THRESHOLD) {
549- // keep buffer alive via reference and avoid copying
550- bufRef = Napi::Persistent (b);
551- haveBufferRef = true ;
552- } else {
553- // large buffer -> write to temp file for streaming
554- // fallthrough to write using dataVec
555- }
556- }
557544
558- if (!haveBufferRef && dataLen > STREAM_THRESHOLD) {
545+ if (dataLen > STREAM_THRESHOLD) {
559546 // write to temp file and let worker stream it
560547 char tmpPath[MAX_PATH];
561548 if (GetTempPathA (MAX_PATH, tmpPath) > 0 ) {
@@ -579,10 +566,7 @@ Napi::Value PrintDirectWrapped(const Napi::CallbackInfo& args) {
579566 class PrintWorker : public Napi ::AsyncWorker {
580567 public:
581568 PrintWorker (Napi::Env env, WorkerData* d, Napi::Promise::Deferred def)
582- : Napi::AsyncWorker(env), data(d), deferred(def), hasBufferRef(false ) {}
583-
584- PrintWorker (Napi::Env env, WorkerData* d, Napi::Promise::Deferred def, Napi::Reference<Napi::Buffer<char >>&& ref)
585- : Napi::AsyncWorker(env), data(d), deferred(def), bufferRef(std::move(ref)), hasBufferRef(true ) {}
569+ : Napi::AsyncWorker(env), data(d), deferred(def) {}
586570
587571 ~PrintWorker () { delete data; }
588572
@@ -647,14 +631,6 @@ Napi::Value PrintDirectWrapped(const Napi::CallbackInfo& args) {
647631 }
648632 }
649633 ifs.close ();
650- } else if (hasBufferRef) {
651- auto buf = bufferRef.Value ();
652- written = WritePrinter ((HANDLE)printerHandle, (LPVOID)buf.Data (), (DWORD)buf.Length (), &dwBytesWritten);
653- if (!written || dwBytesWritten != (DWORD)buf.Length ()) {
654- data->errorInfo = getLastErrorInfo ();
655- data->errorPrefix = " WritePrinter" ;
656- return ;
657- }
658634 } else {
659635 written = WritePrinter ((HANDLE)printerHandle, (LPVOID)data->data .data (), (DWORD)data->data .size (), &dwBytesWritten);
660636 if (!written || dwBytesWritten != (DWORD)data->data .size ()) {
@@ -689,16 +665,9 @@ Napi::Value PrintDirectWrapped(const Napi::CallbackInfo& args) {
689665 private:
690666 WorkerData* data;
691667 Napi::Promise::Deferred deferred;
692- Napi::Reference<Napi::Buffer<char >> bufferRef;
693- bool hasBufferRef;
694668 };
695669
696- PrintWorker* w = nullptr ;
697- if (haveBufferRef) {
698- w = new PrintWorker (env, wd, deferred, std::move (bufRef));
699- } else {
700- w = new PrintWorker (env, wd, deferred);
701- }
670+ PrintWorker* w = new PrintWorker (env, wd, deferred);
702671 w->Queue ();
703672 return deferred.Promise ();
704673}
0 commit comments