mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
zlib: generate error code names in C++
This makes it easier to implement the lookup in a way that targets error codes from a specific compression library, as a way towards supporting multiple ones (e.g. brotli). PR-URL: https://github.com/nodejs/node/pull/23413 Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
627bcf7f27
commit
4d16d1ed34
@ -143,7 +143,7 @@ function zlibBufferSync(engine, buffer) {
|
||||
return buffer;
|
||||
}
|
||||
|
||||
function zlibOnError(message, errno) {
|
||||
function zlibOnError(message, errno, code) {
|
||||
var self = this[owner_symbol];
|
||||
// there is no way to cleanly recover.
|
||||
// continuing only obscures problems.
|
||||
@ -153,7 +153,7 @@ function zlibOnError(message, errno) {
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
const error = new Error(message);
|
||||
error.errno = errno;
|
||||
error.code = codes[errno];
|
||||
error.code = code;
|
||||
self.emit('error', error);
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,8 @@ using v8::FunctionCallbackInfo;
|
||||
using v8::FunctionTemplate;
|
||||
using v8::HandleScope;
|
||||
using v8::Int32;
|
||||
using v8::Integer;
|
||||
using v8::Local;
|
||||
using v8::Number;
|
||||
using v8::Object;
|
||||
using v8::String;
|
||||
using v8::Uint32;
|
||||
@ -56,6 +56,24 @@ using v8::Value;
|
||||
|
||||
namespace {
|
||||
|
||||
#define ZLIB_ERROR_CODES(V) \
|
||||
V(Z_OK) \
|
||||
V(Z_STREAM_END) \
|
||||
V(Z_NEED_DICT) \
|
||||
V(Z_ERRNO) \
|
||||
V(Z_STREAM_ERROR) \
|
||||
V(Z_DATA_ERROR) \
|
||||
V(Z_MEM_ERROR) \
|
||||
V(Z_BUF_ERROR) \
|
||||
V(Z_VERSION_ERROR) \
|
||||
|
||||
inline const char* ZlibStrerror(int err) {
|
||||
#define V(code) if (err == code) return #code;
|
||||
ZLIB_ERROR_CODES(V)
|
||||
#undef V
|
||||
return "Z_UNKNOWN_ERROR";
|
||||
}
|
||||
|
||||
enum node_zlib_mode {
|
||||
NONE,
|
||||
DEFLATE,
|
||||
@ -404,9 +422,10 @@ class ZCtx : public AsyncWrap, public ThreadPoolWork {
|
||||
}
|
||||
|
||||
HandleScope scope(env()->isolate());
|
||||
Local<Value> args[2] = {
|
||||
Local<Value> args[3] = {
|
||||
OneByteString(env()->isolate(), message),
|
||||
Number::New(env()->isolate(), err_)
|
||||
Integer::New(env()->isolate(), err_),
|
||||
OneByteString(env()->isolate(), ZlibStrerror(err_))
|
||||
};
|
||||
MakeCallback(env()->onerror_string(), arraysize(args), args);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user