diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-03 23:26:02 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-03 23:26:02 +0000 |
| commit | 93263c3a61f2ad6b32eed0d279568955cb079128 (patch) | |
| tree | 8ae5b39198bcc2aab67fe2cfea071fd95c7ecbff | |
| parent | 7f8c57e64419cde9fb227ac28fa718811ef782c5 (diff) | |
| download | ruby-93263c3a61f2ad6b32eed0d279568955cb079128.tar.gz ruby-93263c3a61f2ad6b32eed0d279568955cb079128.tar.xz ruby-93263c3a61f2ad6b32eed0d279568955cb079128.zip | |
* dir.c (dir_check): moved other checks from GetDIR.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25639 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | dir.c | 12 |
2 files changed, 9 insertions, 7 deletions
@@ -1,4 +1,6 @@ -Wed Nov 4 08:21:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> +Wed Nov 4 08:26:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * dir.c (dir_check): moved other checks from GetDIR. * dir.c (GetDIR): fixed a variable name. @@ -447,19 +447,19 @@ dir_closed(void) rb_raise(rb_eIOError, "closed directory"); } -static void +static struct dir_data * dir_check(VALUE dir) { + struct dir_data *dirp; if (!OBJ_UNTRUSTED(dir) && rb_safe_level() >= 4) rb_raise(rb_eSecurityError, "Insecure: operation on trusted Dir"); rb_check_frozen(dir); + dirp = rb_check_typeddata(dir, &dir_data_type); + if (!dirp->dir) dir_closed(); + return dirp; } -#define GetDIR(obj, dirp) do {\ - dir_check(obj); \ - TypedData_Get_Struct(obj, struct dir_data, &dir_data_type, dirp); \ - if (dirp->dir == NULL) dir_closed();\ -} while (0) +#define GetDIR(obj, dirp) (dirp = dir_check(obj)) /* |
