libflashrom: Avoid using the global layout

We used to borrow the global layout from the CLI here. Create
a dynamically allocated one instead that doesn't need special
treatment.

Change-Id: Ic48c9e73a3d00782f638f6ff41b620910b24ab6f
Signed-off-by: Nico Huber <nico.h@gmx.de>
Original-Reviewed-on: https://review.coreboot.org/c/flashrom/+/54284
Original-Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Original-Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Original-Reviewed-by: Anastasia Klimchuk <aklm@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom-stable/+/72220
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
diff --git a/libflashrom.c b/libflashrom.c
index 682abe3..b911ccc 100644
--- a/libflashrom.c
+++ b/libflashrom.c
@@ -381,15 +381,17 @@
 	int i;
 	char name[FMAP_STRLEN + 1];
 	const struct fmap_area *area;
-	struct flashrom_layout *l = get_global_layout();
+	struct flashrom_layout *l;
 
-	if (!fmap || !l)
+	if (!fmap || flashrom_layout_new(&l))
 		return 1;
 
 	for (i = 0, area = fmap->areas; i < fmap->nareas; i++, area++) {
 		snprintf(name, sizeof(name), "%s", area->name);
-		if (flashrom_layout_add_region(l, area->offset, area->offset + area->size - 1, name))
+		if (flashrom_layout_add_region(l, area->offset, area->offset + area->size - 1, name)) {
+			flashrom_layout_release(l);
 			return 1;
+		}
 	}
 
 	*layout = l;