diff options
Diffstat (limited to 'windows/utils/getdlgitemtext_alloc.c')
-rw-r--r-- | windows/utils/getdlgitemtext_alloc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/windows/utils/getdlgitemtext_alloc.c b/windows/utils/getdlgitemtext_alloc.c new file mode 100644 index 00000000..f0244d71 --- /dev/null +++ b/windows/utils/getdlgitemtext_alloc.c @@ -0,0 +1,20 @@ +/* + * Handy wrapper around GetDlgItemText which doesn't make you invent + * an arbitrary length limit on the output string. Returned string is + * dynamically allocated; caller must free. + */ + +#include "putty.h" + +char *GetDlgItemText_alloc(HWND hwnd, int id) +{ + char *ret = NULL; + size_t size = 0; + + do { + sgrowarray_nm(ret, size, size); + GetDlgItemText(hwnd, id, ret, size); + } while (!memchr(ret, '\0', size-1)); + + return ret; +} |