mfbt/JSONWriter.cpp
author Andrea Marchesini <amarchesini@mozilla.com>
Wed, 31 Oct 2018 18:30:18 +0100
changeset 500246 544498045a9cfe55968fa6500bffbc3181869fce
parent 229221 abe819e638a9fef308bf0ae69a339c98903f1415
child 505383 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1486698 - Update Fetch+Stream implementation to throw when the stream is disturbed or locked, r=bz In this patch, I went through any place in DOM fetch code, where there are ReadableStreams and update the locked, disturbed, readable checks. Because we expose streams more often, we need an extra care in the use of ErrorResult objects. JS streams can now throw exceptions and we need to handle them. This patch also fixes a bug in FileStreamReader::CloseAndRelease() which could be called in case mReader creation fails.

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "mozilla/JSONWriter.h"

namespace mozilla {
namespace detail {

// The chars with non-'___' entries in this table are those that can be
// represented with a two-char escape sequence. The value is the second char in
// the sequence, that which follows the initial backslash.
#define ___ 0
const char gTwoCharEscapes[256] = {
/*          0    1    2    3    4    5    6    7    8    9 */
/*   0+ */ ___, ___, ___, ___, ___, ___, ___, ___, 'b', 't',
/*  10+ */ 'n', ___, 'f', 'r', ___, ___, ___, ___, ___, ___,
/*  20+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/*  30+ */ ___, ___, ___, ___, '"', ___, ___, ___, ___, ___,
/*  40+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/*  50+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/*  60+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/*  70+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/*  80+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/*  90+ */ ___, ___,'\\', ___, ___, ___, ___, ___, ___, ___,
/* 100+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 110+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 120+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 130+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 140+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 150+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 160+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 170+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 180+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 190+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 200+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 210+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 220+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 230+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 240+ */ ___, ___, ___, ___, ___, ___, ___, ___, ___, ___,
/* 250+ */ ___, ___, ___, ___, ___, ___
};
#undef ___

} // namespace detail
} // namespace mozilla