Files
Tomaž Vajngerl 70162a33fd vcl: Introduce ImportOutput to return BitmapEx or Animation
Instead of returning Graphic, which is fully memory managed and
registers into Memorymanager, instead return ImportOutput which
returns the bitmap as BitmapEx and animation as Animation objects.

The reason is that we don't want to add into a memory managed
Graphic after import, as that might not be the intended use and
can just cause trashing of Graphic. For example this happens when
we want to import inside (Imp)Graphic itself, where we need to
create a new (Imp)Graphic temporarily for no reason when swapping
in, and then assign it to the existing (Imp)Graphic.

This converts PNG, JPG, GIF, XPM, XBM filters to use ImportOutput.

Change-Id: I862ef4125987436798314baaca95b6228f5d1a10
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184396
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Tested-by: Jenkins
2025-04-22 03:10:03 +02:00

57 lines
1.3 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* 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 <tools/stream.hxx>
#include <../source/filter/ixbm/xbmread.hxx>
#include "commonfuzzer.hxx"
#include <config_features.h>
#include <osl/detail/component-mapping.h>
const lib_to_factory_mapping *
lo_get_factory_map(void)
{
static lib_to_factory_mapping map[] = {
{ 0, 0 }
};
return map;
}
const lib_to_constructor_mapping *
lo_get_constructor_map(void)
{
static lib_to_constructor_mapping map[] = {
{ 0, 0 }
};
return map;
}
extern "C" void* lo_get_custom_widget_func(const char*)
{
return nullptr;
}
extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv)
{
TypicalFuzzerInitialize(argc, argv);
return 0;
}
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
{
SvMemoryStream aStream(const_cast<uint8_t*>(data), size, StreamMode::READ);
ImportOutput aImportOutput;
(void)ImportXBM(aStream, aImportOutput);
return 0;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */