[Demonstration 1]

[Buggy Method]
private byte[] computeGzippedContent(final String content) {
    LOG.debug("Gzipping the content....");
    try {
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        final OutputStream os = new GZIPOutputStream(new BufferedOutputStream(baos));
        IOUtils.copy(new ByteArrayInputStream(content.getBytes()), os);
        os.close();
        return baos.toByteArray();
    } catch (final IOException e) {
        throw new WroRuntimeException("Problem while computing gzipped content", e).logError();
    }
}

[Buggy Hunk]
IOUtils.copy(new ByteArrayInputStream(content.getBytes()), os);

[Patch]
IOUtils.copy(new ByteArrayInputStream(content.getBytes(Context.get().getConfig().getEncoding())), os);

[Demonstration 2]

[Buggy Method]
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    LogStream logStream = new LogStream(new ByteArrayOutputStream());
    Map<String, String> returnMessage = new HashMap<>();
    try (PrintWriter out = response.getWriter()) {
        //////////////////// Cross-Origin stuff /////////////////////////////////////
        List<String> incomingURLs = Arrays.asList(getServletContext().getInitParameter("incomingURLs").trim().split(","));
        String clientOrigin = request.getHeader("origin");
        String ipAddress = request.getHeader("x-forwarded-for");
        if (ipAddress == null) {
            ipAddress = request.getRemoteAddr();
        }
        response.setContentType("application/json");
        response.setHeader("Cache-control", "no-cache, no-store");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "-1");
        int myIndex = incomingURLs.indexOf(clientOrigin);
        if (myIndex != -1) {
            response.setHeader("Access-Control-Allow_Origin", clientOrigin);
            response.setHeader("Access-Control-Allow-Methods", "POST");
            response.setHeader("Access-Control-Allow-Headers", "Content-Type");
            response.setHeader("Access-Control-Max-Age", "86400");
        }
        /////////////////////////////////////////////////////////////////////////////////
        Map<String, String[]> params = request.getParameterMap();
        Map<String, String> props = new HashMap<>();
        Iterator<Entry<String, String[]>> it = params.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String[]> pairs = it.next();
            props.put(pairs.getKey(), pairs.getValue()[0]);
        }
        // Check request type
        if (props.containsKey("requesttype")) {
            if (props.get("requesttype").equals("polygonIsValid")) {
                // Check wktIsValid
                returnMessage = checkWktValid(props, "\"" + wktError + "\"");
            } else if (props.get("requesttype").equals("getEVFeatures")) {
                // getEVFeatures
                returnMessage = getEVFeatures(props);
            } else {
                returnMessage.put("error", "\"Request type is invalid!\"");
            }
        } else {
            returnMessage.put("error", "\"Request type is missing!\"");
        }
        JsonObject json = new JsonObject();
        JsonParser parser = new JsonParser();
        Iterator<String> iter = returnMessage.keySet().iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            String value = returnMessage.get(key);
            json.add(key, parser.parse(value));
        }
        out.println(json);
        out.flush();
    } catch (Exception e) {
        logStream.write(e.toString());
        throw new ServletException(e);
    }
}

[Buggy Hunk]
response.setHeader("Access-Control-Allow_Origin", clientOrigin);

[Patch]
response.addHeader("Access-Control-Allow-Origin", clientOrigin);

[Demonstration 3]

[Buggy Method]
public void run() {
    String message;
    while (!this.stopFlag.getFlag()) {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        try {
            if (this.in.ready()) {
                message = this.in.readLine();
                String intro = "\n>>>>>> " + languagesController.getWord("RECEIVED_AT") + " " + sdf.format(cal.getTime()) + "\n";
                if (mh.isTerminationMessage(message)) {
                    this.stop();
                } else if (mh.isFileTransmission(message)) {
                    try {
                        int i;
                        String[] messageParts = mh.getContentFromMessage(message);
                        message = intro + mh.messageToFile(messageParts[1], messageParts[2], this.chatManager.getSavedFilesDirectory()) + "\n";
                        this.chatManager.receivedFile(((i = messageParts[1].lastIndexOf(File.separator)) > 0) ? messageParts[1].substring(i + 1) : messageParts[1]);
                    } catch (IOException e) {
                        message = e.getMessage();
                    }
                } else {
                    message = intro + message + "\n";
                }
                this.chatManager.receivedMessage(message);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    try {
        this.in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

[Buggy Hunk]
this.chatManager.receivedFile(((i = messageParts[1].lastIndexOf(File.separator)) > 0) ? messageParts[1].substring(i+1) : messageParts[1]);

[Patch]
this.chatManager.receivedFile(((i = messageParts[1].lastIndexOf(File.separator.replace("\\", "\\\\"))) > 0) ? messageParts[1].substring(i+1) : messageParts[1]);