libfdisk: fix ref.counting in fdisk_apply_script() [clang analyze]
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
parent
935f9d5b35
commit
00e40d688a
|
@ -1270,10 +1270,13 @@ int fdisk_script_read_file(struct fdisk_script *dp, FILE *f)
|
||||||
* @cxt: context
|
* @cxt: context
|
||||||
* @dp: script (or NULL to remove previous reference)
|
* @dp: script (or NULL to remove previous reference)
|
||||||
*
|
*
|
||||||
* Sets reference to the @dp script. The script headers might be used by label
|
* Sets reference to the @dp script and remove reference to the previously used
|
||||||
* drivers to overwrite built-in defaults (for example disk label Id) and label
|
* script.
|
||||||
* driver might optimize the default semantic to be more usable for scripts
|
*
|
||||||
* (for example to not ask for primary/logical/extended partition type).
|
* The script headers might be used by label drivers to overwrite
|
||||||
|
* built-in defaults (for example disk label Id) and label driver might
|
||||||
|
* optimize the default semantic to be more usable for scripts (for example to
|
||||||
|
* not ask for primary/logical/extended partition type).
|
||||||
*
|
*
|
||||||
* Note that script also contains reference to the fdisk context (see
|
* Note that script also contains reference to the fdisk context (see
|
||||||
* fdisk_new_script()). This context may be completely independent on
|
* fdisk_new_script()). This context may be completely independent on
|
||||||
|
@ -1359,6 +1362,7 @@ int fdisk_apply_script(struct fdisk_context *cxt, struct fdisk_script *dp)
|
||||||
DBG(CXT, ul_debugobj(cxt, "applying script %p", dp));
|
DBG(CXT, ul_debugobj(cxt, "applying script %p", dp));
|
||||||
|
|
||||||
old = fdisk_get_script(cxt);
|
old = fdisk_get_script(cxt);
|
||||||
|
fdisk_ref_script(old);
|
||||||
|
|
||||||
/* create empty disk label */
|
/* create empty disk label */
|
||||||
rc = fdisk_apply_script_headers(cxt, dp);
|
rc = fdisk_apply_script_headers(cxt, dp);
|
||||||
|
@ -1368,6 +1372,8 @@ int fdisk_apply_script(struct fdisk_context *cxt, struct fdisk_script *dp)
|
||||||
rc = fdisk_apply_table(cxt, dp->table);
|
rc = fdisk_apply_table(cxt, dp->table);
|
||||||
|
|
||||||
fdisk_set_script(cxt, old);
|
fdisk_set_script(cxt, old);
|
||||||
|
fdisk_unref_script(old);
|
||||||
|
|
||||||
DBG(CXT, ul_debugobj(cxt, "script done [rc=%d]", rc));
|
DBG(CXT, ul_debugobj(cxt, "script done [rc=%d]", rc));
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue